原作:南水之源

先看看tms和google服务器发布数据的数据排列:(goole地图与arcgis一样)

我现在手上有tms发布的数据,dom,dem等,现在要用arcgis server来发布这些数据

服务器发布卫片和高程数据都是分层级的,从第0级开始一直到23级,但是一般不一定能有那么精细层级,所以,更具当前有的层级进行发布。

但是arcgis不能直接发布tms格式的数据,所以需要写个小程序重新命名:

我们先看tms格式的数据命名规则以及层级关系

再看arcgis的命名规则以及层级关系

从现有tms格式转换成arcgis命名规则代码:

// Rename.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "iostream"
#include <windows.h>
#include <string>
#include <math.h>
#include <shlwapi.h>
#pragma comment(lib, "shlwapi.lib") void addArcGisLayer(std::string &_str, int _index)
{
char c2[20];
sprintf_s(c2, 20, "\\L%02x", _index);
_str += c2;
//std::cout << _str << std::endl;
} std::string addArcGisRow(std::string _str, int _index)
{
char c[20];
sprintf_s(c, 20, "\\R%08x", _index);
_str += c;
return _str;
} std::string addArcGisColumn(std::string _str, int _index)
{
char c[20];
sprintf_s(c, 20, "\\C%08x.png", _index);
_str += c;
return _str;
} void addTmsLayer(std::string &_str, int _index)
{
char c1[20];
sprintf_s(c1, 20, "\\%d", _index);
_str += c1;
} std::string addTmsColumn(std::string _str, int _index)
{
char c[20];
sprintf_s(c, 20, "\\%d", _index);
_str += c;
return _str;
} std::string addTmsRow(std::string _str, int _index)
{
char c[20];
sprintf_s(c, 20, "\\%d.png", _index);
_str += c;
return _str;
} bool createFilePath(std::string str)
{
LPCSTR filepath = str.c_str();
if (!PathIsDirectory(filepath))
{
std::string strbuf = str.substr(0, str.find_last_of('\\'));
if (createFilePath(strbuf))
return CreateDirectory(filepath, NULL);
else
return false;
}
return true;
} int main()
{
bool ret;
std::string str1("");
std::string str2(""); //层级
for (int i=0; i < 11; i++)
{
str1 = std::string("E:\\Map\\DOM");
str2 = std::string("F:\\Out\\Dom");
//layers
addTmsLayer(str1, i);
addArcGisLayer(str2, i); //LPCSTR filepath = str2.c_str();
//if (!PathIsDirectory(filepath))
//{
// CreateDirectory(filepath, NULL);
//} int jmax = pow(2,(i + 1));
int wmax = pow(2,i);
//str1_column
LPCSTR l1path = str1.c_str();
if (!PathFileExists(l1path))
continue;
for (int j=0; j<jmax;j++)
{
std::string str1_column = addTmsColumn(str1, j);
LPCSTR l1column = str1_column.c_str();
if (!PathFileExists(l1column))
{
//std::cout << str1_column << " is no one" << std::endl;
continue;
}
for (int w=0;w<wmax; w++)
{
std::string real1 = addTmsRow(str1_column, w);
LPCSTR l1 = real1.c_str(); if (!PathFileExists(l1))
{
//std::cout << real1 << " is no one" << std::endl;
continue;
}
std::string str2_row = addArcGisRow(str2,wmax - 1 - w);
createFilePath(str2_row);
std::string real2 = addArcGisColumn(str2_row, j); std::cout << real1<<" -----> "<< real2 << std::endl; LPCSTR l2 = real2.c_str();
ret = CopyFile(
l1, l2,
false);
}
}
}
return 0;
}

  

[原]DOM、DEM、landcover,从tms服务发布格式转arcgis、google服务发布格式的更多相关文章

  1. [ArcGIS]ArcGIS Server环境搭建,发布服务,以及使用ArcGIS API for JavaScript

    环境搭建 安装Web服务器 IIS 控制面板-程序-程序和功能-启用或关闭Windows功能,勾选以下 安装VisualStudio,选择包括ASP.NET模块 安装ArcGIS服务器 ArcGIS ...

  2. Cesium调用Geoserver发布的 WMS、WFS服务

    1 GeoServer服务发布 1.1 WMS服务 下载GeoServer安装版安装,同时安装geopackage扩展,以备使用.使用XX地图下载器下载地图,导出成GeoPackage地图文件. (1 ...

  3. 深入浅说服务如何以Jar包的方式发布

    序言 笔者前段时间在使用自研框架NF( 传送门 )开发一个自动模板生成工具之后,想将他发布到Linux下,之前一直使用IDE直接run as运行,在遇到发布的时候考虑过发布为war或者jar,在一番抉 ...

  4. RDIFramework.NET框架SOA解决方案(集Windows服务、WinForm形式与IIS形式发布)-分布式应用

    RDIFramework.NET框架SOA解决方案(集Windows服务.WinForm形式与IIS形式发布)-分布式应用 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架 ...

  5. 【转】从 ArcGIS for Desktop 发布地图服务

    原文链接:http://resources.arcgis.com/zh-CN/help/tutorials/01z300000007000000.htm 本教程的目的是将地图服务直接从 ArcGIS ...

  6. Thrift 个人实战--RPC服务的发布订阅实现(基于Zookeeper服务)

    前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码. 不过Thrift的实现, 简单使用离实际生产环境还 ...

  7. ARCGIS 10.1 发布服务问题以及注意事项汇总

    本文会逐渐丰富,并在遇到问题后进行整理进来. 一.了解ArcGIS Server以及如何利用ArcServer发布服务 官方中文帮助文档:http://resources.arcgis.com/zh- ...

  8. 发布(高程数据)服务,Service Editor界面无LERC格式选项

    [问题描述]: ArcGIS Server 发布(高程数据)服务,无 LERC格式选项,而官方帮助中发布流程提示需要选择LERC格式. [解决办法]: 需求:发布高程数据,ArcGIS Server版 ...

  9. 发布完ArcGIS地图服务后,服务未启动成功

    今天下午更新地图服务后,服务未启动成功.出来的弹出框警告问题目前应该是ArcGIS Server出了问题,打开ArcCatalog目录,查看GIS服务器下localhost下的服务,只要是今天发布的服 ...

随机推荐

  1. typescript 箭头表达式

    箭头表达式:用来声明匿名函数,消除传统匿名函数的this指针问题 1.无参 var sum = () => {} 2.一个参数 var sum = arg2 => {} 3.多个参数 va ...

  2. 使用BERT模型生成句子序列向量

    之前我写过一篇文章,利用bert来生成token级向量(对于中文语料来说就是字级别向量),参考我的文章:<使用BERT模型生成token级向量>.但是这样做有一个致命的缺点就是字符序列长度 ...

  3. 零基础python教程-用Python设计你的第一个小游戏

    学以致用,既然学习了python就要让它来实现我们想做的东西,这次咱就用python来做个简单小游戏,在实践中不断成长. 1.游戏代码: 输入数字,来猜测原作者心中所想的数字,猜中夸你,猜不中不夸你, ...

  4. Python练习题---判断回文数

    设n是一个任意自然数,如果n的各位数字反向排序所得的自然数与n相等,则n被称为回文数,从键盘输入一个5位数字 ,请编写程序判断这个数字是不是回文数. 思路:先获取一个字符串,再判断该字符串是否满足是自 ...

  5. C#:抽象类PK密封类

    最近在看关于C#的书,看到了抽象类和抽象方法,另外还看到了密封类和密封方法,那么二者有什么联系又有什么区别,我把最近的收获分享给大家! 1.抽象类和抽象方法: ·C#使用abstract关键字,将类或 ...

  6. machine learning (6)---how to choose features, polynomial regression

    how to choose features, polynomial regression:通过定义更适合我们的feature,选择更好的模型,使我们的曲线与数据更好的拟合(而不仅仅是一条直线) 可以 ...

  7. spring boot学习笔记(一)

    (翻译看个人意愿) 官方介绍: Spring Boot makes it easy to create stand-alone, production-grade Spring based Appli ...

  8. java中List与数组的转换

    1.数组转换成List public static <T> List<T> asList(T... a) String[] arr = new String[] {" ...

  9. sizeof的注意点

    sizeof('a')的值为4.因为此处‘a’是独立存在的一个字符(没有赋值给其它变量),实际上就是一个整型数,占4个字节,即此处‘a’对应的ascii码的十进制为整数97.(貌似解释得有些牵强,但事 ...

  10. BeautifulSoup模板简单应用-提取html指定数据(api_name/api_method/api_path,请求body/请求header/pagam参数)

    from bs4 import BeautifulSoup import re import os.path import itertools name='newcrm' source_file_pa ...