ArcMap面要素處理之簡化面(Simplify Polygon)


摘要

創建一個新的輸出要素類,包含從輸入面上刪除某些指定大小的部分或孔洞所得的要素。

插圖

用法

  • 存在兩種簡化方法:

    • POINT_REMOVE 方法是兩種方法中較快的。它可移除多余的折點。此方法多用於數據壓縮或更為粗糙的簡化,尤其適用於大家都已經了解的數據。隨着容差的增大,生成的面中有棱角的部分(尖銳拐角)將顯著增加,所以面要素可能變得不夠美觀。

    • BEND_SIMPLIFY 方法較慢,但通常會生成與原始幾何形狀更為接近的結果,因此更加美觀。其操作方式為消除面要素邊界上不太重要的彎曲。此方法用於少量的、更為精細的簡化。

  • 最小面積參數僅適用於簡化的面。任何在簡化過程完成后小於最小面積的面要素都將從輸出要素類中移除。對於一組共享公共邊的相鄰面,該參數適用於該組面的總面積。

  • 該工具會產生兩個輸出要素類,一個是存儲了簡化之后的面的面要素類和一個是存儲了用來表示任意折疊於一點的面的那些點的點要素類。點的輸出名稱和位置自動從輸出的面的名稱獲得,並以 _Pnt 作為后綴。面輸出將包含所有輸入字段;點輸出不包含任何輸入字段。

  • 多部分 (Multipart) 面可簡化為單部分。

  • 以下為用於處理輸出中的拓撲錯誤的 3 個選項:

    • NO_CHECK:不檢查簡化過程所引入的拓撲錯誤。處理過程會更快。只有在可以保證數據的拓撲准確性時才使用該選項。

    • FLAG_ERRORS

      :將對簡化過程所引入的拓撲錯誤進行標記。當標識拓撲錯誤的重要性大於解決錯誤的重要性時,請使用此選項。編輯會話中不支持此選項。

      • 面輸出將包含兩個表示要素是否存在拓撲錯誤的新字段。InPoly_FID 和 SimPlyFlag 分別包含輸入要素 ID 和拓撲錯誤。

      • InPoly_FID 字段將折疊的點連接到其輸入面。

      • 在 SimPlyFlag 字段中,值為 1 表示引入了錯誤,而值為 0(零)表示未引入錯誤。

      • 拓撲錯誤解決之后,標記值仍將保持不變。SimPlyFlag 字段用於檢查包含拓撲錯誤的要素。

    • RESOLVE_ERRORS

      :修復簡化過程所引入的拓撲錯誤。處理時間將會更長。編輯會話中不支持此選項。

      • 指定的容差可能會適合大多數面要素,但並非全部,特別是擁擠區域中的面要素。第一輪簡化后如果檢測到拓撲錯誤,則將定位涉及的邊界線段(非整個面)並使用更小的容差。

      • 此減小后的容差為減小前的百分之五十。新的容差值將用於重新簡化這些線段。該迭代過程會根據需要重復多次,直到不存在拓撲錯誤為止。

      • 面輸出要素類包含的面數量與輸入要素中包含的面數量相同,並且其使用兩個新字段 MaxSimpTol 和 MinSimpTol 存儲迭代過程中簡化每個面時所應用的最大容差和最小容差。如果未引入錯誤,MaxSimpTol 和 MinSimpTol 的值將與指定的簡化容差的值相同。

      • 如果簡化容差值相對較大,較大的面要素旁的較小面要素最終可能會並入較大面要素的內部。本程序無法檢測到這種類型的空間關系錯誤。

    • 對於 NO_CHECK 和 FLAG_ERRORS 選項,簡化過程中可能會創建自相交的幾何形狀,並將自動修復。例如,如果面要素自身存在交叉,則經過修復,它將成為多部分面,以便各部分不存在交叉,盡管面要素的顯示效果依然是自交叉。

  • 當使用了 NO_CHECK 或 FLAG_ERRORS 時,或者選中了保留折疊點復選框時,將對點輸出進行填充。如果輸入面要素包含了多個部分,並且其中一個部分成為折疊的點,則表示該部分的點也將包括在點輸出中。

語法

  SimplifyPolygon_cartography (in_features, out_feature_class, algorithm, tolerance, {minimum_area}, {error_option}, {collapsed_point_option})
參數 說明 數據類型
in_features 要簡化的面要素。 Feature Layer
out_feature_class 要創建的輸出面要素類。 Feature Class
algorithm 指定面簡化算法。POINT_REMOVE —保留構成面的基本幾何形狀的關鍵點並移除所有其他點。這是默認設置。BEND_SIMPLIFY —保留面的主要幾何形狀並移除邊界中多余的彎曲。 String
tolerance 用於確定簡化程度的容差。必須指定一個容差,且值必須大於零。可以選擇首選單位;默認為要素單位。對於 POINT_REMOVE 算法,指定的容差表示允許的最大偏移量。對於 BEND_SIMPLIFY 算法,指定的容差表示參考彎曲基線的長度。 Linear unit
minimum_area(可選) 設置要保留的簡化面的最小面積。默認值為零,即保留所有面。可以為指定的值選擇首選單位;默認為要素單位。 Areal unit
error_option(可選) 指定處理拓撲錯誤的方式(這些拓撲錯誤可能是在處理時引入的,其中包括交叉的線、重疊的線和折疊為零長度的線)。NO_CHECK —指定不檢查拓撲錯誤。這是默認設置。FLAG_ERRORS —指定標記拓撲錯誤(如果發現拓撲錯誤)。RESOLVE_ERRORS —指定解決拓撲錯誤(如果發現拓撲錯誤)。 String
collapsed_point_option(可選) 指定是否將處理中發現的任何折疊的面積為零的面要素作為點保留下來。僅當指定了 NO_CHECK 或 FLAG_ERRORS 時,此選項才可用。KEEP_COLLAPSED_POINTS —指定將折疊的面積為零的面要素作為點保留下來。折疊面中邊界的端點將存儲在位於輸出要素類位置的點要素類中,以輸出要素類的名稱加上后綴 _Pnt 作為其名稱。這是默認設置。NO_KEEP —指定折疊的面積為零的面要素不作為點保留下來,即使在處理中發現也不保留;因此,點要素類將為空。 Boolean

代碼實例

簡化面示例(Python 窗口)

以下 Python 窗口腳本演示了如何在即時模式下使用“簡化面”工具。

  
import arcpy
from arcpy import env
import arcpy.cartography as CA
env.workspace = "C:/data"
CA.SimplifyPolygon("soils.shp", "C:/output/output.gdb/simplified_soils", "POINT_REMOVE", 100)

簡化面示例 2(獨立腳本)

以下獨立 Python 腳本演示了如何使用“簡化面”工具。

  # Name: SimplifyPolygon_Example2.py
# Description: Eliminate small islands before simplifying and smoothing lake boundaries
# Author: ESRI

# Import system modules
import arcpy
from arcpy import env
import arcpy.management as DM
import arcpy.cartography as CA

# Set environment settings
env.workspace = "C:/data/Portland.gdb/Hydrography"

# Set local variables
inLakeFeatures = "lakes"
eliminatedFeatures = "C:/data/PortlandOutput.gdb/lakes_eliminated"
simplifiedFeatures = "C:/data/PortlandOutput.gdb/lakes_simplified"
smoothedFeatures = "C:/data/PortlandOutput.gdb/lakes_smoothed"

# Eliminate small islands in lake polygons.
DM.EliminatePolygonPart(inLakeFeatures, eliminatedFeatures, 100, "OR", 0, "CONTAINED_ONLY")

# Simplify lake polygons.
CA.SimplifyPolygon(eliminatedFeatures, simplifiedFeatures, "POINT_REMOVE", 50, 200, "RESOLVE_ERRORS", "KEEP_COLLAPSED_POINTS", "CHECK")

# Smooth lake polygons.
CA.SmoothPolygon(simplifiedFeatures, smoothedFeatures, "PAEK", 100, "FLAG_ERRORS")

了解更多

要了解更多關於ArcMap的知識請參閱以下鏈接:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM