[原]DOM、DEM、landcover,从tms服务发布格式转arcgis、google服务发布格式
原作:南水之源
先看看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服务发布格式的更多相关文章
- [ArcGIS]ArcGIS Server环境搭建,发布服务,以及使用ArcGIS API for JavaScript
环境搭建 安装Web服务器 IIS 控制面板-程序-程序和功能-启用或关闭Windows功能,勾选以下 安装VisualStudio,选择包括ASP.NET模块 安装ArcGIS服务器 ArcGIS ...
- Cesium调用Geoserver发布的 WMS、WFS服务
1 GeoServer服务发布 1.1 WMS服务 下载GeoServer安装版安装,同时安装geopackage扩展,以备使用.使用XX地图下载器下载地图,导出成GeoPackage地图文件. (1 ...
- 深入浅说服务如何以Jar包的方式发布
序言 笔者前段时间在使用自研框架NF( 传送门 )开发一个自动模板生成工具之后,想将他发布到Linux下,之前一直使用IDE直接run as运行,在遇到发布的时候考虑过发布为war或者jar,在一番抉 ...
- RDIFramework.NET框架SOA解决方案(集Windows服务、WinForm形式与IIS形式发布)-分布式应用
RDIFramework.NET框架SOA解决方案(集Windows服务.WinForm形式与IIS形式发布)-分布式应用 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架 ...
- 【转】从 ArcGIS for Desktop 发布地图服务
原文链接:http://resources.arcgis.com/zh-CN/help/tutorials/01z300000007000000.htm 本教程的目的是将地图服务直接从 ArcGIS ...
- Thrift 个人实战--RPC服务的发布订阅实现(基于Zookeeper服务)
前言: Thrift作为Facebook开源的RPC框架, 通过IDL中间语言, 并借助代码生成引擎生成各种主流语言的rpc框架服务端/客户端代码. 不过Thrift的实现, 简单使用离实际生产环境还 ...
- ARCGIS 10.1 发布服务问题以及注意事项汇总
本文会逐渐丰富,并在遇到问题后进行整理进来. 一.了解ArcGIS Server以及如何利用ArcServer发布服务 官方中文帮助文档:http://resources.arcgis.com/zh- ...
- 发布(高程数据)服务,Service Editor界面无LERC格式选项
[问题描述]: ArcGIS Server 发布(高程数据)服务,无 LERC格式选项,而官方帮助中发布流程提示需要选择LERC格式. [解决办法]: 需求:发布高程数据,ArcGIS Server版 ...
- 发布完ArcGIS地图服务后,服务未启动成功
今天下午更新地图服务后,服务未启动成功.出来的弹出框警告问题目前应该是ArcGIS Server出了问题,打开ArcCatalog目录,查看GIS服务器下localhost下的服务,只要是今天发布的服 ...
随机推荐
- SUSE 12安装详解
1.部署步骤 1.1.启动安装程序 在启动页面上选择Installation,然后按Enter键,这将载入SUSE Linux服务器安装程序并以普通模式安装. 1.2.选择安装语言 Language和 ...
- Murach ASP.NET 4.5 C# With Visual Studio 2013 翻译
本书由我自己翻译完,省略书中练习部分,练习部分可以阅读原文 本书对新手友好,介绍了Web通讯的基本原理,ASP.NET开发,项目开发所需的各种开发与部署技术, Ajax,与WCF, Web API ...
- LGOJP1941 飞扬的小鸟
题目链接 题目链接 题解 \(f[i][j]\)表示位置\((i,j)\)到达需要的最小点击数. \(f[i][j]=\min\{{f[i-1][j-kx]+k},f[i-1][j+y]\}\) \( ...
- 配置数据源和配置jpa的yml文件
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver username: root password: root url: j ...
- LG5325 【模板】Min_25筛
P5325 [模板]Min_25筛 题目背景 模板题,无背景. 题目描述 定义积性函数$f(x)$,且$f(p^k)=p^k(p^k-1)$($p$是一个质数),求 $$\sum_{i=1}^n f( ...
- dp--01背包,完全背包,多重背包
背包问题 以下代码 n是物品个数,m是背包容积 物品价值和重量int v[maxn],w[maxn]; 01背包 模板 for(int i = 0; i < n; i++) { for(int ...
- Apache Solr Velocity模板远程代码执行
更多内容,欢迎关注微信公众号:信Yang安全,期待与您相遇. 这里用的docker环境 很简单的 在这里不再介绍 本地搭建好环境然后访问8983端口 网页如下: 查下节点名称 同样名字可以访问http ...
- Apache Kylin在4399大数据平台的应用
来自:AI前线(微信号:ai-front),作者:林兴财,编辑:Natalie作者介绍:林兴财,毕业于厦门大学计算机科学与技术专业.有多年的嵌入式开发.系统运维经验,现就职于四三九九网络股份有限公司, ...
- cube.js 学习(七)cube.js type 以及format 说明
cube.js 对于measure以及dimension 提供了丰富的数据类型,基本满足我们常见应用的开发,同时对于不同类型也提供了 格式化的操作 measure类型 number 格式 purc ...
- Webstorm 2019最新激活码
Webstorm 2019激活码(有效期至2020年6月5日) K6IXATEF43-eyJsaWNlbnNlSWQiOiJLNklYQVRFRjQzIiwibGljZW5zZWVOYW1lIjo ...