[原]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下的服务,只要是今天发布的服 ...
随机推荐
- pod-test
apiVersion: v1 kind: Pod metadata: name: init-demo # 命名空间 namespace: default labels: app ...
- 如何使用MCUXpresso IDE创建一个Cortex-M工程
拿到Cortex-M开发板之后,就可以开始使用MCUXpresso IDE上手入门.在这个教程中,我们将详细介绍如何基于CMSIS(Cortex微控制器软件接口标准)在MCUXpresso IDE中为 ...
- Div+CSS总结
之前最早接触是在牛腩新闻发布系统中,当时看到这些自己是一头雾水,不过好在我们已经形成了这样的学习习惯,先实践在接触理论,这样再学习理论的时候就会想到当初我是怎样的迷茫,这样自己印象更深刻. DIV+C ...
- 「NOI2007」 货币兑换
「NOI2007」 货币兑换 题目描述 小 Y 最近在一家金券交易所工作.该金券交易所只发行交易两种金券:A 纪念券(以下简称 A 券)和 B 纪念券(以下简称 B 券).每个持有金券的顾客都有一个自 ...
- Selenium常用API的使用java语言之20-获取窗口截图
自动化用例是由程序去执行,因此有时候打印的错误信息并不十分明确.如果在脚本执行出错的时候能对当前窗口截图保存,那么通过图片就可以非常直观地看出出错的原因. WebDriver提供了截图函数getScr ...
- spring mvc 坑之PUT,DELETE方法接收不到请求参数
https://www.cnblogs.com/roobtyan/p/9576685.html 原因: Tomcat处理参数的问题: 1.将请求体中的数据,封装成一个map 2.request. ...
- flash文件上传下载组件
以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传 ...
- 边框图片border-image
一.定义: 在内容变化的容器里使用,边框自动填充,由于浏览器的兼容问题,没有广泛使用 border-image属性是速记属性用于设置 border-image-source, border-image ...
- Linux下搭建iSCSI共享存储的方法 TGT 方式 Debian9.5系统下
iSCSI(internet SCSI)技术由IBM公司研究开发,是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速 ...
- yum和apt-get 软件包管理器的用法及区别
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器. 一般来说著名的linux系统基本上分两大类: 1.R ...