原作:南水之源

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

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

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

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

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

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

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

  1. // Rename.cpp : 定义控制台应用程序的入口点。
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "iostream"
  6. #include <windows.h>
  7. #include <string>
  8. #include <math.h>
  9. #include <shlwapi.h>
  10. #pragma comment(lib, "shlwapi.lib")
  11.  
  12. void addArcGisLayer(std::string &_str, int _index)
  13. {
  14. char c2[20];
  15. sprintf_s(c2, 20, "\\L%02x", _index);
  16. _str += c2;
  17. //std::cout << _str << std::endl;
  18. }
  19.  
  20. std::string addArcGisRow(std::string _str, int _index)
  21. {
  22. char c[20];
  23. sprintf_s(c, 20, "\\R%08x", _index);
  24. _str += c;
  25. return _str;
  26. }
  27.  
  28. std::string addArcGisColumn(std::string _str, int _index)
  29. {
  30. char c[20];
  31. sprintf_s(c, 20, "\\C%08x.png", _index);
  32. _str += c;
  33. return _str;
  34. }
  35.  
  36. void addTmsLayer(std::string &_str, int _index)
  37. {
  38. char c1[20];
  39. sprintf_s(c1, 20, "\\%d", _index);
  40. _str += c1;
  41. }
  42.  
  43. std::string addTmsColumn(std::string _str, int _index)
  44. {
  45. char c[20];
  46. sprintf_s(c, 20, "\\%d", _index);
  47. _str += c;
  48. return _str;
  49. }
  50.  
  51. std::string addTmsRow(std::string _str, int _index)
  52. {
  53. char c[20];
  54. sprintf_s(c, 20, "\\%d.png", _index);
  55. _str += c;
  56. return _str;
  57. }
  58.  
  59. bool createFilePath(std::string str)
  60. {
  61. LPCSTR filepath = str.c_str();
  62. if (!PathIsDirectory(filepath))
  63. {
  64. std::string strbuf = str.substr(0, str.find_last_of('\\'));
  65. if (createFilePath(strbuf))
  66. return CreateDirectory(filepath, NULL);
  67. else
  68. return false;
  69. }
  70. return true;
  71. }
  72.  
  73. int main()
  74. {
  75. bool ret;
  76. std::string str1("");
  77. std::string str2("");
  78.  
  79. //层级
  80. for (int i=0; i < 11; i++)
  81. {
  82. str1 = std::string("E:\\Map\\DOM");
  83. str2 = std::string("F:\\Out\\Dom");
  84. //layers
  85. addTmsLayer(str1, i);
  86. addArcGisLayer(str2, i);
  87.  
  88. //LPCSTR filepath = str2.c_str();
  89. //if (!PathIsDirectory(filepath))
  90. //{
  91. // CreateDirectory(filepath, NULL);
  92. //}
  93.  
  94. int jmax = pow(2,(i + 1));
  95. int wmax = pow(2,i);
  96. //str1_column
  97. LPCSTR l1path = str1.c_str();
  98. if (!PathFileExists(l1path))
  99. continue;
  100. for (int j=0; j<jmax;j++)
  101. {
  102. std::string str1_column = addTmsColumn(str1, j);
  103. LPCSTR l1column = str1_column.c_str();
  104. if (!PathFileExists(l1column))
  105. {
  106. //std::cout << str1_column << " is no one" << std::endl;
  107. continue;
  108. }
  109. for (int w=0;w<wmax; w++)
  110. {
  111. std::string real1 = addTmsRow(str1_column, w);
  112. LPCSTR l1 = real1.c_str();
  113.  
  114. if (!PathFileExists(l1))
  115. {
  116. //std::cout << real1 << " is no one" << std::endl;
  117. continue;
  118. }
  119. std::string str2_row = addArcGisRow(str2,wmax - 1 - w);
  120. createFilePath(str2_row);
  121. std::string real2 = addArcGisColumn(str2_row, j);
  122.  
  123. std::cout << real1<<" -----> "<< real2 << std::endl;
  124.  
  125. LPCSTR l2 = real2.c_str();
  126. ret = CopyFile(
  127. l1, l2,
  128. false);
  129. }
  130. }
  131. }
  132. return 0;
  133. }

  

[原]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. linux系统编程之文件与io(二)

    今天继续学习文件与io,话不多说,开始进入正题: 文件的read和write系统调用: 说明:函数中出现在size_t和ssize_t是针对系统定制的数据类型:     下面以一个实现文件简单拷贝的示 ...

  2. UVA1660 电视网络 Cable TV Network[拆点+最小割]

    题意翻译 题目大意: 给定一个n(n <= 50)个点的无向图,求它的点联通度.即最少删除多少个点,使得图不连通. 解析 网络瘤拆点最小割. 定理 最大流\(=\)最小割 感性地理解(口胡)一下 ...

  3. 《CoderXiaoban》第八次团队作业:Alpha冲刺1

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 Coderxiaoban团队 作业学习目标 (1)掌握软件测试基 ...

  4. Hibernate中的Session

    我们之前也经常使用Session,通过连接服务器将需要保存的值存到服务器的session中,这是之前关于session的简单应用.现在看到Hibernate框架中也有关于Session的定义,该定义是 ...

  5. HihoCoder1236 Scores

    Scores 求五维偏序(≤).强制在线. \(n,q\le 50000\) 烂大街的题解 考虑如果我们能用bitset找到每一维有哪些比询问点小,然后把每一维的结果取交集,得到的就是答案了. 然后对 ...

  6. arp和rarp协议

    ARP与RARP详细解析 原创zlnnjit 发布于2016-04-03 15:12:15 阅读数 9544 收藏 展开 地址解析协议 ARP和逆地址解析协议RARP 1.基本关系: ​ 2.地址解析 ...

  7. Canvas 总结,到第4章 canvas图形变换

    canvas 必须认识到的大坑 <!-- 重点: 在js/canvas标签中定义的宽和高是画布实际的宽和高. 在样式表中定义的宽和高是画布缩放后的宽和高. 即:把js/canvas实际大小缩放到 ...

  8. Kafka kSQL sql查询

    背景 kafka早期作为一个日志消息系统,很受运维欢迎的,配合ELK玩起来很happy,在kafka慢慢的转向流式平台的过程中,开发也慢慢介入了,一些业务系统也开始和kafka对接起来了,也还是很受大 ...

  9. 洛谷 P5436 【XR-2】缘分 题解

    P5436 [XR-2]缘分 题目背景 世间万物都置身于缘分编织的大网中.缘分未到,虽历经千劫,却不能相遇.缘分到了,在草原上都能等到一艘船.--<一禅小和尚> 题目描述 一禅希望知道他和 ...

  10. [golang]Go net.lookup包

    DNS (Domain Name System 的缩写)的作用非常简单,就是根据域名查出IP地址. 域名系统(通常被称为“DNS”)是一个网络系统,允许我们把对人类友好的名称解析为唯一的地址. Int ...