Archive for the Category: ArcGIS

proj.4 字符串转成Esri wkt字符串的方法

proj.4 字符串转成Esri wkt字符串的方法 使用gdal/ogr库进行转换 import os import sys import string import osgeo.osr if (len(sys.argv) <> 2): print ‘Usage: proj2wkt.py [Proj4 Projection Text]’ else: srs = osgeo.osr.SpatialReference() srs.ImportFromProj4(sys.argv[1]) srs.MorphToESRI() //重点,转成Esri的wkt格式 print srs.ExportToWkt()

Leave a comment

自定义ArcGIS矢量底图

目前Esri已经在ArcGIS Online上发布了矢量底图,用户可以通过修改Style的方式来自定义矢量底图。 用户编辑后的矢量底图还可以发布成新的图层,供用户使用。 用户自定义的内容包括: 1 控制图层的显示 2.修改图层的符号和显示 3.在选定区域修改语言选项 4.在选定地区修改争议地区的显示 自定义Style示例 下图就是由一个自定义矢量底图的例子,由现有由矢量底图修改而来。 修改的内容主要包括: 1.背景颜色和水系颜色由 ‘#cfcfd4′改成 ‘#a6deff’ 2.土地和植被的填充颜色由‘#ededed’ 改成 ‘#dfffd9′ 3.城区颜色由‘#e8e8e8′ 改成 ‘#d5e3ca’ 由于上面的图层在不同的显示级别都有可能显示,所以修改的不止一处。 创建使用自定义矢量底图的地图 创建新的Tile Layer 1.登录到ArcGIS Online,点击Map,打开Map窗口 2.添加矢量瓦片图层,点击Add按钮,选择Search for Layers in ArcGIS Online,输入“esri vector basemap”,点击GO按钮 3.选择owner为‘esri_vector’的任意一个图层,然后点击Add按钮 4.在TOC面板中,点击刚才添加的图层的More Option按钮,选择Copy 5.点击刚才Copy的图层的More Option选项,选择Save Layer按钮,将图层保存Online中 修改新建图层的Style 1.点击上一步新生成的图层的More Option选项,选择Show Item Details选项 2.在Item详情页面的Open选项中选择Download Style选项,将Style文件下载到本地 3.编辑Style文件。打开root.json文件,并编辑该Style文件,保存或另存文件。 Esri的矢量底图使用Mapbox vector tile specification (v8),用户可以参考 Mapbox […]

Leave a comment

ArcGIS for Server 10.3.X 新型紧凑型缓存的解读和应用 zz

原文地址:http://mp.weixin.qq.com/s?__biz=MzA4NjI0ODMyNA==&mid=400860148&idx=1&sn=ea65c230cc2fdcca1fb983dea0d1d453&scene=5&srcid=1127QN8qFNaaGaQ77sAGJkMp#rd 早在2010年年底,牛魔王在其博客空间(http://blog.csdn.net/warrenwyf/article/details/6069711 ) 中对ArcGIS 10中推出的紧凑型缓存格式进行了详细的解读。紧随着的4年时间里,ArcGIS for Server本身经历了10、10.1.X和10.2.X各版本的逐级更替,特别是软件架构发生了显著的变化。然而,就紧凑型缓存本身而言,牛魔王中王的解读一直都是适用的。衷心地向我们的大牛致敬! 直到2014年年底ArcGIS 10.3正式发布,Esri才推出了新的紧凑型缓存格式以增强用户的访问体验。新的缓存格式下,关键的差别在于Esri将缓存的索引信息.bundlx包含在了缓存的切片文件.bundle中。 接下来,我们就简单解读一下这一新型的紧凑型缓存格式。俗语说,万变不离其宗。既然缓存文件夹下仅包含了bundle文件,可以想见,切片的索引,切片的偏移和切片的图片流都必然包含在这一文件中。根据经验,缓存本身遵循的是16进制的形式。依照这一思路,利用UltraEdit打开bundle文件并以16进制格式进行查看。 为了便于分析,我们先创建一个在L00级只包含一个切片的缓存服务,并在UltraEdit中以16进制格式查看L00级下的R0000C0000.bundle文件。 通过对这一文件中信息存储规律的分析,可初步得出如下结论: 1) 文件中包含大量04 00 00 00 00 00 00 00的16进制字节组,共计16893组; 2) 文件中仅包含一个PNG24的文件头字节组89504E47,即第一行第一列的切片,bundle文件中唯一的一张图片。图片流紧随(1)中所提到的字节组之后,但偏移4个字节; 3) (2)中所述的4字节偏移量的数值恰等于图片流的长度; 4) 文件第5行的起始4个字节44 00 02 00按照低位到高位换算出的数值等于131140,这一值与(2)中所述的PNG文件头位置恰恰吻合。 综上分析: 1)起始4行是bundle的文件头信息,可忽略; 2)bundle的文件头之后记录了16384张切片的切片位置,仅4字节,从低位到高位,后4字节可忽略; 3)位置信息之后,对于切片的记录,先以4字节记录切片的长度,而后紧跟图片流信息。到此,bundle结束。 下一步呢,我们将选择一个狭长的矩形面要素发布服务并切图,以分析行列切片在bundle文件中的具体存储规律。 通过对bundle文件和对应的松散缓存在L02级别上的对比,可推断: 1)bundle中索引的存储是按行依次存储,即第1行的1至128,第2行的1至128,以此类推,直至最后一张切片即第128行128列; 2)bundle中图片流的存储仅包含非空切片。此外,通过对这一更复杂的地图缓存的分析,再次论证了前面的推论。 既然上述的分析完毕,接下来就要对上述的分析进行一番验证啦。这里呢,我会利用ArcGIS Runtime SDK for Android实现抽象理论的实践工作。本次验证的核心在于,通过对TiledServiceLayer进行扩展,按照上面的存储推论覆写getTile(intmLevel, int mColumn, int mRow)方法。 第一步,根据参数中的比例级别、列号和行号定位到Bundle文件。 1 String level = Integer.toString(mLevel); 2 int […]

Leave a comment

Esri 矢量底图介绍(Beta)

今年早些时候,Esri公布了在ArcGIS平台中引入矢量底图的计划并展示了预览版。随着ArcGIS Online在11月的更新,web map先已经支持矢量瓦片图层。作为更新的一部分,Esri已经提供了几种矢量地图,用户可以在webmap中使用。 几年以来,Esri一直提供图片格式的底图供用户使用,非常多用户在使用这些底图,但基于图片的底图有一些限制,例如用户无法自定义样式,对高分辨率设备支持不好等。因此Esri引入矢量切片的底图来解决这些问题。 矢量底图以矢量切片的方式提供,格式为pbf(MapBox定义),用户在客户端渲染数据。用户可以通过ArcGIS Pro 1.2来生成矢量切片。 随着ArcGIS Pro 1.2在2016年的发布,用户可以使用自己的数据生成矢量切片并托管到ArcGIS Server 10.4 或ArcGIS Online上。矢量底图目前只支持浏览器的渲染,将来会支持桌面的移动端设备,用户可以自定义样式来渲染矢量切片。 已经上线的矢量底图 目前已经上线的矢量底图使用同一个瓦片服务,但提供了8种样式,可以通过ArcGIS Online的Esri Vector Basemaps (Beta) 组来访问。 链接为:http://www.arcgis.com/home/group.html?id=30de8da907d240a0bccd5ad3ff25ef4a 矢量底图在Webmap中,既可以作为底图,也可以作为普通图层加载。 自定义矢量底图 用户可以自定义矢量底图的样式,通过编辑已经存在的矢量切片图层的样式文件,并重新发布的方式可以创建一个新的矢量切片图层。 重要提示 目前矢量底图处于Beta阶段,数据和样式文件的格式都有可能发生变化,因此用户创建的样式文件可能需要随之更新,请在项目中慎用。另外,和已经存在的底图一样,矢量底图对所有ArcGIS用户是免费使用的。

Leave a comment

ArcGIS开发权威指南 上架

《ArcGIS开发权威指南》内容提要 随着Web GIS 2.0时代的到来,单个研发技术的实施已经不能满足当前GIS项目的基本需求。如今用户既需要专业人士进行业务管理,又要求整个企业进行协作分享,而且还需要将信息通过网络或者移动端进行发布,这无疑需要多源技术的共同结合才能完成。那么从事GIS行业的开发者就需要了解GIS多源的开发技术。《ArcGIS开发权威指南》主要介绍ArcGIS平台及相关产品的开发模式,包括桌面端开发、Web端开发、移动端开发、数据库开发、脚本开发等主流的ArcGIS开发技术。 《ArcGIS开发权威指南》要求用户具有ArcGIS for Desktop、ArcGIS for Server、ArcSDE等ArcGIS产品相关基础,同时要求具有C#、Java、Python、JavaScript、PL/SQL等编程基础。《ArcGIS开发权威指南》适合ArcGIS开发工程师、GIS项目经理、GIS系统建设者,以及即将步入社会的相关专业学生阅读。 购买地址: 亚马逊  

Leave a comment

Esri与开源

Esri与开源 随着主流的开发平台逐渐开源化,加上GitHub的兴起,开源深入了各个领域,Esri也不例外,积极的拥抱开源。 目前,Esri产品不仅支持开源产品(Linux,PostgreSQL,Python等),还开源了许多产品。 Esri开源代码主要通过github来进行发布,主页面为http://esri.github.io/ 在Esri开源的产品中既有App开发框架,也有web前端功能类库,还有服务器端产品,基本上覆盖了Web开发,移动端开发和服务器端开发。使用Esri开源的产品,可以大大加快用户业务系统的开发,降低系统开发难度。 目前主要的开源产品包括: FlexViewer Esri Geoportal Server ArcGIS Editor for OpenStreetMap Terraformer Esri Leaflet Koop Esri Geometry API for Java 其他 FlexViewer 项目地址:https://github.com/Esri/arcgis-viewer-flex 项目截图: 项目介绍:FlexViewer可以说是目前为止Esri最成功的一款开源产品。FlexViewer从2009年开源至今,已经有成千上万个网站在使用。 Flex Viewer是可以高效开发基于WEB的地理信息应用系统的一种完全免费的应用程序框架。业务人员使用该框架可以无需任何额外的编程就能够通过简单配置的方法快速搭建起一个基于ArcGIS Server的、以地图为中心的富客户端(RIA)应用的原型。该框架中还自带了大量的能够满足各种地图应用需要的Widget,如Identify、GeoRSS、DataExtract、BookMark、NetworkAnalyst、MapSwitcher等地图交互和分析等工具。同时,如果需要增加新的Widget,则开发人员只需在自定义的Widget中实现框架要求的接口,然后再将该Widget配置到框架中的Config.xml文件中,就能在无需修改框架代码的情况下轻松地完成独立Widget与框架的无缝集成。 Esri Geoportal Server 项目地址:https://github.com/Esri/geoportal-server 项目截图: 项目介绍:Geoportal Server主要用于展示和使用各项空间资源,包括数据集、栅格数据以及网络服务。它能够帮助用户管理和发布各项空间资源的元数据以便于检索和展示资源。 Geoportal server可支撑基于标准的数据交换和元数据展示应用。 使用Geoportal server可以提高企业或组织内地理空间活动的效率和效果,能够促进地理信息资源的共享,提高地理信息资源的查找效率并充分利用这些资源。 ArcGIS Editor for OpenStreetMap 项目地址:https://github.com/Esri/arcgis-osm-editor * 项目截图: * 项目介绍 ArcGIS Editor for OpenStreetMap是一个基于c#开发的在ArcMap中读取OpenStreetMap数据的插件。使用这个插件的功能如下: 1. […]

Leave a comment

ArcGIS中去除多边形岛和洞的工具

使用DEM提取的多边形有非常多的岛和洞,这时候为了减小数据量和计算复杂度,就需要去掉这些岛和洞。在ArcGIS中提供了Eliminate Polygon Part工具来完成这项功能,工具截图如下: 处理后的数据结果如下: 图中深红色的多边形即为去除掉的岛和洞。 在工具中可以通过面积参数的设置来确定哪些岛和洞被去除。

Leave a comment

gaiaGeom到AGSGeometry的转换

在iOS应用中做离线数据管理和查询的时候,libspatialite是一个不错的选择。那么使用ArcGIS runtime for iOS 作为基本开发框架的时候,数据交互就成为一个基本的功能,libspatialite 提供的Geometry为gaiaGeom 类型,ArcGIS runtime for iOS无法使用,需要将其转换为AGSGeometry对象。 下面的代码完成数据的转换: – (AGSGeometry *) geometryWithGaiaGeomColl: (void *)geometry { int pts = 0; int lns = 0; int pgs = 0; int type; int iv; int ib; double x; double y; double x0; double y0; gaiaPointPtr pt; gaiaLinestringPtr ln; gaiaPolygonPtr pg; gaiaRingPtr rng; int ring_points; int n_items; […]

Leave a comment

spatialite 支持3857

在向spatialite导入数据的时候,如果数据为web墨卡托投影的话,则数据无法导入,提示参考系不存在,解决办法是执行下面的sql语句 insert into spatialrefsys(srid,authname,authsrid,refsysname,proj4text) values(3857,’epsg’,3857,’Web Mercator’,’PROJCS[“Google Mercator”, GEOGCS [ “WGS 84″, DATUM [“World Geodetic System 1984 (EPSG ID 6326)”, SPHEROID [“WGS 84 (EPSG ID 7030)”, 6378137.0, 298.257223563]], PRIMEM [ “Greenwich”, 0.000000 ], UNIT [“Decimal Degree”, 0.0174532925199433]], PROJECTION [“Popular Visualisation Pseudo-Mercator”], PARAMETER [“Latitudeoforigin”, 0.0], PARAMETER [“CentralMeridian”, 0.0], PARAMETER [“FalseEasting”, 0.0], PARAMETER [“FalseNorthing”, 0.0], UNIT [“Meter”, 1.0]]’)

Leave a comment

ArcGIS 支持mongodb作为数据源

mongodb 作为典型的NoSQL数据库,可以存储点类型的空间数据。目前ArcGIS 以plugin的方式支持mongodb作为datasource。 mongodb plugin for ArcGIS 可以在ArcGIS.com上下载,编译前需要下载Mongodb C#driver Mongodb C#driver 下载地址:https://github.com/mongodb/mongo-csharp-driver mongodb plugin for ArcGIS 下载地址:http://www.arcgis.com/home/item.html?id=25d12436c73a43c98c711826f9f662e4 1 代码下载下来之后,使用vs2010 编译,编译后会得到3个dll,MongoDBCommands.dll,MongoDBPlugIn.dll,MongoDBPluginUI.dll 2 使用ESRIRegAsm.exe(C:\Program Files (x86)\Common Files\ArcGIS\bin 目录下) 注册MongoDBCommands.dll,MongoDBPlugIn.dll 3 在ArcMap 的customize中添加MongoDBCommands.dl,会将MongoDB工具注册到ArcGIS界面中,如下图: 4 使用这两个工具即可导入、导出数据到mongodb     参考资料: http://blogs.esri.com/esri/arcgis/2012/05/02/mongodb-example-code-for-adding-a-nosql-plug-in-data-source/

Also posted in shape file Leave a comment