如何获得geometry/shape的KWT

本文转载自:http://www.cnblogs.com/Joetao/articles/5846740.html

ArcMap中使用ArcPy实现Geometry与WKT的相互转换(转载)

转自:在Web GIS迅猛发展的http://blog.csdn.net/linghe301/article/details/29554257

今天,使用浏览器来进行交互以其方便性、快捷性被广大用户所推崇,那么在传输格式方面,都已比较简单的JSON或者WKT来解决网络带宽带来的数据压力。

在ArcGIS10.2版本,已经提供了Geometry与JSON的相互转换,而且在现实业务中,Geometry与WKT的相互转换也比较多见。例如在ArcSDE环境中,用户可以使用Esri或者原生提供的函数来进行转换。

[html] view plain copy

print?

  1. SQL> select sde.st_astext(shape) from city where objectid<8;
  2. SDE.ST_ASTEXT(SHAPE)
  3. ---------------------------------------------------------------------
  4. POINT Z ( 116.38094000 39.92361500 0.00000000)
  5. POINT Z ( 117.20350000 39.13111900 0.00000000)
  6. POINT Z ( 114.48978000 38.04512800 0.00000000)
  7. POINT Z ( 112.56935000 37.87111300 0.00000000)
  8. POINT Z ( 111.66330000 40.82094200 0.00000000)
  9. POINT Z ( 123.41168000 41.79661600 0.00000000)
  10. POINT Z ( 125.31543000 43.89256300 0.00000000)
  11. 已选择7行。

如果数据格式并非存储在SDE中,而是存储在文件格式中,怎么获得相关的WKT呢?

----------------------------------------------------------------------------------

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

建议看到转载,请直接访问正版链接获得最新的ArcGIS技术文章

Blog:              http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

一:Geometry2WKT

1:比如下面存储在FGDB的三个多边形

2:创建一个TEXT类型的字段来存储WKT串,注意这个字段的长度,如果你的要素包含点比较多的话,长度可能要求比较高。我创建的字段名称为wkt,字段长度为4000.

----------------------------------------------------------------------------------

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

建议看到转载,请直接访问正版链接获得最新的ArcGIS技术文章

Blog:              http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

3:创建好字段之后,打开要素类的属性表,然后选择wkt字段,右键选择Field Calculator选项

4:打开字段计算器,选择Python,输入wkt=!SHAPE.wkt!

注意:!SHAPE!是Python的固有写法,而且ArcPy也提供了其他函数,比如json、wkb、area等

http://resources.arcgis.com/en/help/main/10.2/index.html#/Geometry/018z00000070000000/

----------------------------------------------------------------------------------

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

建议看到转载,请直接访问正版链接获得最新的ArcGIS技术文章

Blog:              http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

5:执行之后,我们可以看到wkt字段已经存储了这些Geometry转换后的wkt串文本信息。而且在转换过程中,并不需要ArcMap开启编辑。

用途:其实使用这种方法不仅仅可以获得相关图形的WKT,也可以变相的为文件存储的数据保存历史。

意思很明白,在编辑数据之前,我可以把原来的数据以WKT存储在某个字段中,如果编辑后发现编辑的有问题,可以使用接下来介绍的WKT2Geometry方法把图形还原回来。

----------------------------------------------------------------------------------

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

建议看到转载,请直接访问正版链接获得最新的ArcGIS技术文章

Blog:              http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

二:WKT2Geometry

在进行ST_Geometry的使用或者测试过程中经常会碰到这种情况

[html] view plain copy

print?

  1. select ssdl, t.shape.minx x, t.shape.miny y
  2. from GX_FM_PT t
  3. where sde.st_within(t.shape,sde.st_polyfromtext(‘polygon((119.91009745117188 31.763774721679688,119.91198954101563 31.763774721679688,119.91198954101563 31.765422670898438,119.91009745117188 31.763774721679688,119.91009745117188 31.763774721679688))‘,9)) = 1

用户使用了一个WKT串来生成一个Geometry对象来进行空间查询,首先我需要验证这个WKT是什么样子的,是否正确,是否可能有查询结果,我就需要将WKT串转换成Geometry看一下,那么该功能就需要用户掌握了。

例如上面的截图,我希望将ObjectID=2的三角形更新为ObjectID=1的四边形,那我获得了ObjectID=1的WKT串就可以实现上述操作。

(该例子仅仅说明转换方法)

----------------------------------------------------------------------------------

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

建议看到转载,请直接访问正版链接获得最新的ArcGIS技术文章

Blog:              http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

1:打开属性表,选中ObjectID=2的要素,然后选择SHAPE字段右键

----------------------------------------------------------------------------------

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

建议看到转载,请直接访问正版链接获得最新的ArcGIS技术文章

Blog:              http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

2:打开字段计算器,使用ArcPy提供的类FromWKT,里面输入字符串类型的WKT串

3:执行之后可以看到相关图形已经发生了变化

----------------------------------------------------------------------------------

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

建议看到转载,请直接访问正版链接获得最新的ArcGIS技术文章

Blog:              http://blog.csdn.net/linghe301

----------------------------------------------------------------------------------

时间: 2024-10-05 08:20:28

如何获得geometry/shape的KWT的相关文章

JAVA用geotools读写shape格式文件

转自:http://toplchx.iteye.com/blog/1335007 JAVA用geotools读写shape格式文件 (对应geotools版本:2.7.2) (后面添加对应geotools 10.0版本的写法) 读shape文件. shape格式文件最少包含3个文件,他们的后缀是:.shp, .dbf, .shx. .shp存储地理形状和位置信息,.dbf存储属性信息,.shx是索引文件. 单独读取DBF文件 public void readDBF(String path) {

Java 读取shape文件

C# 的话建议使用ArcEngine进行开发,由于各版本不兼容,改为采用基于Java 的GeoTool进行读取 pom依赖如下 <properties> <geotools.version>19.1</geotools.version> </properties> <repositories> <repository> <id>osgeo</id> <name>Open Source Geospat

hdu 4056 Draw a Mess(数据结构-并查集)

Draw a Mess Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 864    Accepted Submission(s): 180 Problem Description It's graduated season, every students should leave something on the wall, so.

十、DG

1.DG是dependency graph,我认为是依赖图,和DAG(有向无环图)的区别:DAG用来做场景管理,每个node代表的不是tranform就是shape,有父子关系. DG是代表了每个实体节点之间的相互关系,通过plug,从output到input,再在每个DG节点中,对数据进行存储和计算,这样一种数据结构. Dependency graph nodes are used for almost everything in Maya such as model creation, de

OSG(OpenSceneGraphic) 渲染引擎架构--整体认识

本文参考<<osg最长一帧>>, <<OpenSceneGraph三维渲染引擎编程指南>>, <<OpenSceneGraph三维渲染引擎设计与实践>> 整理而来,  感谢大牛们的精彩著作. 相比Ogre来说, Ogre代码很规范, 只是入门资料较少,如果能在学习之前能总体上对架构有个印象就好了, 免得盲人摸象啊, 不过,还好有OSG. 场景相关: Node, Geode, Group, Transform, LOD, Camera,

Shapely中的几何图形操作

Geometric Objects object.area Returns the area (float) of the object. object.bounds Returns a (minx, miny, maxx, maxy) tuple (float values) that bounds the object. object.length Returns the length (float) of the object. object.geom_type Returns a str

OSG(OpenSceneGraphic) 渲染引擎架构--整体认识 [转]

原文:http://blog.csdn.net/zangle260/article/details/41123067?utm_source=tuicool 本文参考<<osg最长一帧>>, <<OpenSceneGraph三维渲染引擎编程指南>>, <<OpenSceneGraph三维渲染引擎设计与实践>> 整理而来,  感谢大牛们的精彩著作. 相比Ogre来说, Ogre代码很规范, 只是入门资料较少,如果能在学习之前能总体上对架构

ArcEngine C# 二次开发 PolyLine 多次打断操作

一条线(Polyline)被另外一条线多次(Polyline)切割,也就是说打断的点有多个,而AE中的IFeatureEdit.Split()只能是一个点一个点的处理,这样就涉及到了循环操作,现在将本人自己写具体的操作函数附上,大家一同学习. 1 public void LineSplit(IFeature feature, IGeometry other) 2 { 3 try 4 { 5 ITopologicalOperator shape = feature.Shape as ITopolo

MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example 1.4 Labeling the Map

MapServer Tutorial--MapServer7.2.1教程学习--第一节用例实践:Example 1.4 Labeling the Map 一.前言 MapServer拥有非常灵活的标签标记系统.它支持bitmap以及truetype字体等.使用truetype字体同时还支持其缩放.标签的角度和位置是可以自定义的. 通过把标签的位置和角度以及其他参数的设置使用,你可以把你的地图装饰得更加美观,信息体现的更加丰富. 二.搭建Example1.4站点 所有的学习都要通过实践,还是从搭建