原作:南水之源

先看看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. 16寸屏苹果MacBook Pro悄悄上市,售价18999 元起步

    传闻了半年之久的16寸屏苹果MacBook Pro于11月13日夜晚终于上线,15寸的机身16寸的屏幕,相比于此前的13寸和15寸MacBook Pro,新品搭配了更大的屏幕.更高性能的处理器以及更大 ...

  2. sort对二维字符数组排序

    转载:sort对二维字符数组排序

  3. IDEA -01 -忽略指定文件夹 -防止加载Vue-cli执行"npm install"命令后的项目时卡死

    问题描述 Vue的"npm install" 命令执行后,会生成一个很大的目录层次的"node_modules",文件十分繁多; idea加载这个项目下的文件夹 ...

  4. 4.Linq to Xml

    目录 1.Linq to Xml函数构造方法 2.创建包含文本节点的Xml文档 3.保存和加载Xml 4.处理Xml片段 5.从数据库中生成XML 1.Linq to Xml函数构造方法 Linq t ...

  5. 兼容火狐,Chrome,IE6,IE7,IE8的HTML换行写法

    本文链接:https://java-er.com/blog/html-break-line-firefox-chrome/ 兼容火狐,Chrome,IE6,IE7,IE8的HTML换行写法1.任意数据 ...

  6. ubuntu apache2.4.7配置白名单

    1.仅允许192.168.1.1访问,此处需要注意apache2.2和2.4版本之后白名单配置的方法是不一样的 <Directory /var/www/> Options FollowSy ...

  7. C#指针使用demo

    #region 使用指针检索数据值 //class program //{ // // 1.项目属性勾选“允许不安全代码” // // 2.使用unsafe 修饰符 // // 这里是将整个Main方 ...

  8. vue中插槽作用域的使用

    一.插槽作用域 1.简单来说就是带参数的插槽: 2.使用方式: 在组件标签内部加一个template标签 在template标签上加一个属性scope 值随意书写 在组件内部用slot进行接受,如果给 ...

  9. AJAX备忘

    基础 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX ...

  10. Transformer 比较好的博客

    1. https://www.jianshu.com/p/0c196df57323 细节理解: 2. https://zhuanlan.zhihu.com/p/44121378 3. https:// ...