方法簽名
void ConvertToVoronoiRegions(
IFeatureClass pFeatureClass, // 輸出要素類 (null=自動建立)
ITinFilter pFilter, // TIN 過濾器 (null=全部節點)
IPolygon pClippingPolygon, // 裁剪邊界 (null=無限延伸)
String indexFieldName, // 節點索引欄位名
String tagFieldName // 節點標籤欄位名
)
參數深度解析
| 參數 | 用途 | 傳 null 效果 | 典型值 |
| pFeatureClass | 指定輸出 Voronoi 多邊形存放的要素類 | 系統自動建立臨時要素類 | 預先建立的空要素類 (含幾何類型 esriGeometryPolygon) |
| pFilter | 篩選參與 Voronoi 計算的 TIN 節點 | 所有節點參與 | TinValueFilter 依屬性值篩選 |
| pClippingPolygon | 限制 Voronoi 圖形範圍 (如行政邊界) | Voronoi 區域無限延伸至 TIN 凸包外 | 研究區邊界多邊形 (投影坐標系一致) |
| indexFieldName | 輸出要素中關聯原始節點 OID/FID 的欄位 | 不建立關聯欄位 | "SourceID", "NodeOID" |
| tagFieldName | 輸出要素中攜帶原始節點標籤值的欄位 | 不攜帶標籤 | "TagValue", "ZoneCode" |
使用範例:裁剪至研究區
IPolygon clipPoly = GetStudyAreaBoundary(); // 從圖層獲取
ITinFilter filter = new TinValueFilterClass();
filter.put_ValueField("ZoneType");
filter.put_Value("Urban"); // 僅城市區域節點
tinAdv.ConvertToVoronoiRegions(outputFC, filter, clipPoly, "SrcOID", "ZoneCode");
注意事項
- 輸入點需為 **投影坐標系** (如 UTM、高斯克吕格),地理坐標系生成的 Voronoi 面積、鄰域關係嚴重失真。
- 點位過於密集時,Voronoi 邊界極細碎,建議先聚類或抽稀。
- 生成後需手動建立空間索引:
((IFeatureClassManage)outputFC).AddIndex(new IndexClass() { Fields = shapeField })。