zoukankan      html  css  js  c++  java
  • ArcMap中使用ArcPy实现Geometry与WKT的相互转换

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


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

    SQL> select sde.st_astext(shape) from city where objectid<8;
    
    SDE.ST_ASTEXT(SHAPE)
    ---------------------------------------------------------------------
    
    POINT Z ( 116.38094000 39.92361500 0.00000000)
    POINT Z ( 117.20350000 39.13111900 0.00000000)
    POINT Z ( 114.48978000 38.04512800 0.00000000)
    POINT Z ( 112.56935000 37.87111300 0.00000000)
    POINT Z ( 111.66330000 40.82094200 0.00000000)
    POINT Z ( 123.41168000 41.79661600 0.00000000)
    POINT Z ( 125.31543000 43.89256300 0.00000000)
    
    已选择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的使用或者測试过程中常常会碰到这样的情况

    select ssdl, t.shape.minx x, t.shape.miny y
      from GX_FM_PT t
     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 

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


  • 相关阅读:
    nginx安装
    虚拟机下Linux的NAT网络配置 及显示红叉
    eclipse常用快捷键
    MongoDB笔记
    Pytorch 之 MNIST 数据集实现(代码讲解)
    [python][科学计算][matplotlib]使用指南
    梯度计算
    第一次神经网络作业,神经网络预测图片是否为猫的代码实现
    KVM监控完善
    Zabbix表结构,zabbix api获取主机信息vs直接从数据库获取主机信息
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7224857.html
Copyright © 2011-2022 走看看