1. 程式人生 > >ArcMap中使用ArcPy實現Geometry與WKT的相互轉換

ArcMap中使用ArcPy實現Geometry與WKT的相互轉換

bottom ast 我們 python 函數 == 其它 相關 圖形

在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

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


ArcMap中使用ArcPy實現Geometry與WKT的相互轉換