@dsh-gis/dsh-opengis-skill 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/.editorconfig +19 -0
  2. package/CHANGELOG.md +96 -0
  3. package/LICENSE +21 -21
  4. package/README.md +91 -30
  5. package/THIRD_PARTY_NOTICES.md +37 -10
  6. package/assets/gdal/reference/raster-tools.md +538 -538
  7. package/assets/gdal/reference/vector-tools.md +149 -149
  8. package/assets/gdal-api/reference/raster-api.md +424 -424
  9. package/assets/gdal-api/reference/vector-api.md +724 -724
  10. package/assets/geometry-api-net/reference/geometry-types.md +243 -243
  11. package/assets/geopandas/reference/core-api.md +221 -221
  12. package/assets/geotools/reference/raster-rendering.md +108 -108
  13. package/assets/geotools/reference/vector-io.md +149 -149
  14. package/assets/jts/reference/geometry-operations.md +303 -303
  15. package/assets/mapsui/SKILL.md +283 -283
  16. package/assets/opengis-all/reference/data-stages.md +608 -608
  17. package/assets/opengis-all/reference/workflow-cheatsheets.md +324 -324
  18. package/assets/opengis-utils-for-java/reference/common-tasks.md +384 -384
  19. package/assets/opengis-utils-for-net/reference/code-patterns.md +124 -124
  20. package/assets/opengis-utils-for-net/reference/util-classes.md +291 -291
  21. package/assets/pyqgis/reference/processing-rendering.md +292 -292
  22. package/assets/pyqgis/reference/vector-raster-layers.md +318 -318
  23. package/assets/qgis-process/SKILL.md +414 -414
  24. package/assets/qgis-process/reference/algorithm-cheatsheet.md +194 -194
  25. package/assets/shapely/reference/operations-reference.md +199 -199
  26. package/cordis.patch.yml +6 -3
  27. package/lib/catalog.d.ts +50 -0
  28. package/lib/catalog.js +238 -0
  29. package/lib/index.d.ts +47 -6
  30. package/lib/index.js +32 -44
  31. package/lib/markdown-links.d.ts +11 -0
  32. package/lib/markdown-links.js +103 -0
  33. package/lib/skill-file.js +104 -17
  34. package/locale/en.json +1 -1
  35. package/locale/zh.json +1 -1
  36. package/package.json +11 -5
  37. package/upstream.json +64 -2
@@ -1,243 +1,243 @@
1
- # Geometry API for .NET Geometry Types Reference
2
-
3
- > 这是 [../SKILL.md](../SKILL.md) 的补充文件,收录几何类型体系与 GeometryEngine / Operator 两种 API 风格的完整说明。
4
-
5
- ---
6
-
7
- ## 几何类型
8
-
9
- ### GeometryType 枚举
10
-
11
- ```csharp
12
- public enum GeometryType
13
- {
14
- Unknown = 0,
15
- Point = 1,
16
- Line = 2,
17
- Envelope = 3,
18
- MultiPoint = 4,
19
- Polyline = 5,
20
- Polygon = 6
21
- }
22
- ```
23
-
24
- ### Geometry 基类(抽象)
25
-
26
- 所有几何类型继承自 `Geometry`,共有属性和方法:
27
-
28
- ```csharp
29
- // 属性
30
- geometry.Type // GeometryType 枚举
31
- geometry.IsEmpty // 是否为空
32
- geometry.Dimension // 维度(Point=0, Line/Polyline=1, Polygon/Envelope=2)
33
- geometry.IsPoint // 是否为点类型
34
- geometry.IsLinear // 是否为线类型
35
- geometry.IsArea // 是否为面类型
36
-
37
- // 方法
38
- geometry.GetEnvelope() // 获取外包矩形
39
- geometry.CalculateArea2D() // 计算面积
40
- geometry.CalculateLength2D() // 计算长度
41
- geometry.Copy() // 深拷贝
42
- geometry.IsValid() // 是否有效
43
- ```
44
-
45
- ### Point — 点
46
-
47
- ```csharp
48
- var p = new Point(); // 空点 (NaN)
49
- var p = new Point(10, 20); // 2D 点
50
- var p = new Point(10, 20, 30); // 3D 点 (带 Z)
51
-
52
- p.X // double, X 坐标
53
- p.Y // double, Y 坐标
54
- p.Z // double?, Z 坐标(可空)
55
- p.M // double?, M 值(可空)
56
-
57
- p.Distance(otherPoint) // 计算两点距离
58
- p.Equals(otherPoint, tolerance) // 容差比较
59
- ```
60
-
61
- ### Line — 线段
62
-
63
- ```csharp
64
- var line = new Line(); // 空线段
65
- var line = new Line(new Point(0, 0), new Point(10, 10));
66
-
67
- line.Start // Point, 起点
68
- line.End // Point, 终点
69
- line.Length // double, 长度
70
- ```
71
-
72
- ### Envelope — 外包矩形
73
-
74
- ```csharp
75
- var env = new Envelope(); // 空包围盒
76
- var env = new Envelope(0, 0, 100, 100); // xMin, yMin, xMax, yMax
77
-
78
- env.XMin, env.YMin, env.XMax, env.YMax // 边界坐标
79
- env.Width // 宽度
80
- env.Height // 高度
81
- env.Center // Point, 中心点
82
- env.Area // 面积
83
-
84
- env.Contains(point) // 是否包含点
85
- env.Intersects(otherEnv) // 是否与另一个包围盒相交
86
- env.Merge(point) // 合并点到包围盒
87
- env.Merge(otherEnv) // 合并另一个包围盒
88
- ```
89
-
90
- ### MultiPoint — 多点
91
-
92
- ```csharp
93
- var mp = new MultiPoint();
94
- var mp = new MultiPoint(new[] { new Point(1, 2), new Point(3, 4) });
95
-
96
- mp.Add(new Point(5, 6)); // 添加点
97
- mp.Count // 点数量
98
- mp.GetPoint(0) // 获取指定索引的点
99
- mp.GetPoints() // 获取所有点 (IEnumerable<Point>)
100
- ```
101
-
102
- ### Polyline — 折线
103
-
104
- ```csharp
105
- var polyline = new Polyline();
106
-
107
- // 添加路径(path),每条路径是一组连续的点
108
- polyline.AddPath(new[] {
109
- new Point(0, 0), new Point(10, 0), new Point(10, 10)
110
- });
111
-
112
- polyline.PathCount // 路径数量
113
- polyline.Length // 总长度
114
- polyline.GetPath(0) // 获取指定索引的路径 (IReadOnlyList<Point>)
115
- polyline.GetPaths() // 获取所有路径
116
- ```
117
-
118
- ### Polygon — 多边形
119
-
120
- ```csharp
121
- var polygon = new Polygon();
122
-
123
- // 添加环(ring),首尾点必须闭合
124
- polygon.AddRing(new[] {
125
- new Point(0, 0), new Point(10, 0), new Point(10, 10),
126
- new Point(0, 10), new Point(0, 0) // ← 首尾闭合
127
- });
128
-
129
- polygon.RingCount // 环数量
130
- polygon.Area // 面积(Shoelace 公式)
131
- polygon.GetRing(0) // 获取指定索引的环 (IReadOnlyList<Point>)
132
- polygon.GetRings() // 获取所有环
133
- ```
134
-
135
- ---
136
-
137
- ## 两种 API 风格
138
-
139
- ### 风格 1:GeometryEngine 静态方法(推荐)
140
-
141
- `GeometryEngine` 提供所有操作的便捷静态方法入口,是最简洁的使用方式:
142
-
143
- ```csharp
144
- using OpenGIS.Esri.Geometry.Core;
145
-
146
- // 空间关系判断
147
- bool result = GeometryEngine.Contains(geometry1, geometry2);
148
- bool result = GeometryEngine.Intersects(geometry1, geometry2);
149
- bool result = GeometryEngine.Within(geometry1, geometry2);
150
- bool result = GeometryEngine.Disjoint(geometry1, geometry2);
151
- bool result = GeometryEngine.Crosses(geometry1, geometry2);
152
- bool result = GeometryEngine.Touches(geometry1, geometry2);
153
- bool result = GeometryEngine.Overlaps(geometry1, geometry2);
154
- bool result = GeometryEngine.Equals(geometry1, geometry2);
155
- double dist = GeometryEngine.Distance(geometry1, geometry2);
156
-
157
- // 集合运算
158
- Geometry result = GeometryEngine.Union(geometry1, geometry2);
159
- Geometry result = GeometryEngine.Intersection(geometry1, geometry2);
160
- Geometry result = GeometryEngine.Difference(geometry1, geometry2);
161
- Geometry result = GeometryEngine.SymmetricDifference(geometry1, geometry2);
162
-
163
- // 几何运算
164
- Geometry buffer = GeometryEngine.Buffer(geometry, distance);
165
- Geometry hull = GeometryEngine.ConvexHull(geometry);
166
- Geometry simple = GeometryEngine.Simplify(geometry, tolerance);
167
- Geometry simpleOGC = GeometryEngine.SimplifyOGC(geometry, spatialRef);
168
- bool isSimple = GeometryEngine.IsSimpleOGC(geometry, spatialRef);
169
- Geometry general = GeometryEngine.Generalize(geometry, maxDeviation);
170
- Geometry dense = GeometryEngine.Densify(geometry, maxSegmentLength);
171
- Geometry clipped = GeometryEngine.Clip(geometry, clipEnvelope);
172
- Geometry offset = GeometryEngine.Offset(geometry, distance);
173
- Point center = GeometryEngine.Centroid(geometry);
174
- Geometry boundary = GeometryEngine.Boundary(geometry);
175
- double area = GeometryEngine.Area(geometry);
176
- double length = GeometryEngine.Length(geometry);
177
-
178
- // 大地测量
179
- double geodesicDist = GeometryEngine.GeodesicDistance(point1, point2);
180
- double geodesicArea = GeometryEngine.GeodesicArea(polygon);
181
-
182
- // 邻近搜索
183
- Proximity2DResult nearest = GeometryEngine.GetNearestCoordinate(geometry, point, testPolygonInterior);
184
- Proximity2DResult nearest = GeometryEngine.GetNearestVertex(geometry, point);
185
- Proximity2DResult[] results = GeometryEngine.GetNearestVertices(geometry, point, searchRadius, maxVertexCount);
186
-
187
- // 序列化 / 反序列化
188
- string wkt = GeometryEngine.GeometryToWkt(geometry);
189
- Geometry fromWkt = GeometryEngine.GeometryFromWkt(wktString);
190
- byte[] wkb = GeometryEngine.GeometryToWkb(geometry, bigEndian);
191
- Geometry fromWkb = GeometryEngine.GeometryFromWkb(wkbBytes);
192
- string json = GeometryEngine.GeometryToGeoJson(geometry);
193
- Geometry fromJson = GeometryEngine.GeometryFromGeoJson(geoJsonString);
194
- string esri = GeometryEngine.GeometryToEsriJson(geometry);
195
- Geometry fromEsri = GeometryEngine.GeometryFromEsriJson(esriJsonString);
196
- ```
197
-
198
- ### 风格 2:Operator 单例模式
199
-
200
- 每个算子都通过 `Instance` 单例属性获取(Lazy 初始化),适合需要更精细控制的场景:
201
-
202
- ```csharp
203
- using OpenGIS.Esri.Geometry.Core.Operators;
204
-
205
- // 空间关系
206
- bool contains = ContainsOperator.Instance.Execute(geom1, geom2);
207
- bool intersects = IntersectsOperator.Instance.Execute(geom1, geom2);
208
- double distance = DistanceOperator.Instance.Execute(geom1, geom2);
209
- bool equals = EqualsOperator.Instance.Execute(geom1, geom2);
210
- bool disjoint = DisjointOperator.Instance.Execute(geom1, geom2);
211
- bool within = WithinOperator.Instance.Execute(geom1, geom2);
212
- bool crosses = CrossesOperator.Instance.Execute(geom1, geom2);
213
- bool touches = TouchesOperator.Instance.Execute(geom1, geom2);
214
- bool overlaps = OverlapsOperator.Instance.Execute(geom1, geom2);
215
-
216
- // 集合运算
217
- Geometry union = UnionOperator.Instance.Execute(geom1, geom2);
218
- Geometry intersection = IntersectionOperator.Instance.Execute(geom1, geom2);
219
- Geometry difference = DifferenceOperator.Instance.Execute(geom1, geom2);
220
- Geometry symDiff = SymmetricDifferenceOperator.Instance.Execute(geom1, geom2);
221
-
222
- // 一元运算
223
- Geometry buffer = BufferOperator.Instance.Execute(geometry, distance);
224
- Geometry convexHull = ConvexHullOperator.Instance.Execute(geometry);
225
- Geometry simplified = SimplifyOperator.Instance.Execute(geometry, tolerance);
226
- Point centroid = CentroidOperator.Instance.Execute(geometry);
227
- Geometry boundary = BoundaryOperator.Instance.Execute(geometry);
228
- double area = AreaOperator.Instance.Execute(geometry);
229
- double length = LengthOperator.Instance.Execute(geometry);
230
- Geometry offset = OffsetOperator.Instance.Execute(geometry, distance);
231
-
232
- // 大地测量
233
- double geodesicDist = GeodesicDistanceOperator.Instance.Execute(point1, point2);
234
- double geodesicArea = GeodesicAreaOperator.Instance.Execute(polygon);
235
-
236
- // 邻近搜索
237
- Proximity2DResult result = Proximity2DOperator.Instance.GetNearestCoordinate(geometry, point, testPolygonInterior);
238
- Proximity2DResult result = Proximity2DOperator.Instance.GetNearestVertex(geometry, point);
239
- Proximity2DResult[] results = Proximity2DOperator.Instance.GetNearestVertices(geometry, point, searchRadius, maxVertexCount);
240
- ```
241
-
242
- ---
243
-
1
+ # Geometry API for .NET Geometry Types Reference
2
+
3
+ > 这是 [../SKILL.md](../SKILL.md) 的补充文件,收录几何类型体系与 GeometryEngine / Operator 两种 API 风格的完整说明。
4
+
5
+ ---
6
+
7
+ ## 几何类型
8
+
9
+ ### GeometryType 枚举
10
+
11
+ ```csharp
12
+ public enum GeometryType
13
+ {
14
+ Unknown = 0,
15
+ Point = 1,
16
+ Line = 2,
17
+ Envelope = 3,
18
+ MultiPoint = 4,
19
+ Polyline = 5,
20
+ Polygon = 6
21
+ }
22
+ ```
23
+
24
+ ### Geometry 基类(抽象)
25
+
26
+ 所有几何类型继承自 `Geometry`,共有属性和方法:
27
+
28
+ ```csharp
29
+ // 属性
30
+ geometry.Type // GeometryType 枚举
31
+ geometry.IsEmpty // 是否为空
32
+ geometry.Dimension // 维度(Point=0, Line/Polyline=1, Polygon/Envelope=2)
33
+ geometry.IsPoint // 是否为点类型
34
+ geometry.IsLinear // 是否为线类型
35
+ geometry.IsArea // 是否为面类型
36
+
37
+ // 方法
38
+ geometry.GetEnvelope() // 获取外包矩形
39
+ geometry.CalculateArea2D() // 计算面积
40
+ geometry.CalculateLength2D() // 计算长度
41
+ geometry.Copy() // 深拷贝
42
+ geometry.IsValid() // 是否有效
43
+ ```
44
+
45
+ ### Point — 点
46
+
47
+ ```csharp
48
+ var p = new Point(); // 空点 (NaN)
49
+ var p = new Point(10, 20); // 2D 点
50
+ var p = new Point(10, 20, 30); // 3D 点 (带 Z)
51
+
52
+ p.X // double, X 坐标
53
+ p.Y // double, Y 坐标
54
+ p.Z // double?, Z 坐标(可空)
55
+ p.M // double?, M 值(可空)
56
+
57
+ p.Distance(otherPoint) // 计算两点距离
58
+ p.Equals(otherPoint, tolerance) // 容差比较
59
+ ```
60
+
61
+ ### Line — 线段
62
+
63
+ ```csharp
64
+ var line = new Line(); // 空线段
65
+ var line = new Line(new Point(0, 0), new Point(10, 10));
66
+
67
+ line.Start // Point, 起点
68
+ line.End // Point, 终点
69
+ line.Length // double, 长度
70
+ ```
71
+
72
+ ### Envelope — 外包矩形
73
+
74
+ ```csharp
75
+ var env = new Envelope(); // 空包围盒
76
+ var env = new Envelope(0, 0, 100, 100); // xMin, yMin, xMax, yMax
77
+
78
+ env.XMin, env.YMin, env.XMax, env.YMax // 边界坐标
79
+ env.Width // 宽度
80
+ env.Height // 高度
81
+ env.Center // Point, 中心点
82
+ env.Area // 面积
83
+
84
+ env.Contains(point) // 是否包含点
85
+ env.Intersects(otherEnv) // 是否与另一个包围盒相交
86
+ env.Merge(point) // 合并点到包围盒
87
+ env.Merge(otherEnv) // 合并另一个包围盒
88
+ ```
89
+
90
+ ### MultiPoint — 多点
91
+
92
+ ```csharp
93
+ var mp = new MultiPoint();
94
+ var mp = new MultiPoint(new[] { new Point(1, 2), new Point(3, 4) });
95
+
96
+ mp.Add(new Point(5, 6)); // 添加点
97
+ mp.Count // 点数量
98
+ mp.GetPoint(0) // 获取指定索引的点
99
+ mp.GetPoints() // 获取所有点 (IEnumerable<Point>)
100
+ ```
101
+
102
+ ### Polyline — 折线
103
+
104
+ ```csharp
105
+ var polyline = new Polyline();
106
+
107
+ // 添加路径(path),每条路径是一组连续的点
108
+ polyline.AddPath(new[] {
109
+ new Point(0, 0), new Point(10, 0), new Point(10, 10)
110
+ });
111
+
112
+ polyline.PathCount // 路径数量
113
+ polyline.Length // 总长度
114
+ polyline.GetPath(0) // 获取指定索引的路径 (IReadOnlyList<Point>)
115
+ polyline.GetPaths() // 获取所有路径
116
+ ```
117
+
118
+ ### Polygon — 多边形
119
+
120
+ ```csharp
121
+ var polygon = new Polygon();
122
+
123
+ // 添加环(ring),首尾点必须闭合
124
+ polygon.AddRing(new[] {
125
+ new Point(0, 0), new Point(10, 0), new Point(10, 10),
126
+ new Point(0, 10), new Point(0, 0) // ← 首尾闭合
127
+ });
128
+
129
+ polygon.RingCount // 环数量
130
+ polygon.Area // 面积(Shoelace 公式)
131
+ polygon.GetRing(0) // 获取指定索引的环 (IReadOnlyList<Point>)
132
+ polygon.GetRings() // 获取所有环
133
+ ```
134
+
135
+ ---
136
+
137
+ ## 两种 API 风格
138
+
139
+ ### 风格 1:GeometryEngine 静态方法(推荐)
140
+
141
+ `GeometryEngine` 提供所有操作的便捷静态方法入口,是最简洁的使用方式:
142
+
143
+ ```csharp
144
+ using OpenGIS.Esri.Geometry.Core;
145
+
146
+ // 空间关系判断
147
+ bool result = GeometryEngine.Contains(geometry1, geometry2);
148
+ bool result = GeometryEngine.Intersects(geometry1, geometry2);
149
+ bool result = GeometryEngine.Within(geometry1, geometry2);
150
+ bool result = GeometryEngine.Disjoint(geometry1, geometry2);
151
+ bool result = GeometryEngine.Crosses(geometry1, geometry2);
152
+ bool result = GeometryEngine.Touches(geometry1, geometry2);
153
+ bool result = GeometryEngine.Overlaps(geometry1, geometry2);
154
+ bool result = GeometryEngine.Equals(geometry1, geometry2);
155
+ double dist = GeometryEngine.Distance(geometry1, geometry2);
156
+
157
+ // 集合运算
158
+ Geometry result = GeometryEngine.Union(geometry1, geometry2);
159
+ Geometry result = GeometryEngine.Intersection(geometry1, geometry2);
160
+ Geometry result = GeometryEngine.Difference(geometry1, geometry2);
161
+ Geometry result = GeometryEngine.SymmetricDifference(geometry1, geometry2);
162
+
163
+ // 几何运算
164
+ Geometry buffer = GeometryEngine.Buffer(geometry, distance);
165
+ Geometry hull = GeometryEngine.ConvexHull(geometry);
166
+ Geometry simple = GeometryEngine.Simplify(geometry, tolerance);
167
+ Geometry simpleOGC = GeometryEngine.SimplifyOGC(geometry, spatialRef);
168
+ bool isSimple = GeometryEngine.IsSimpleOGC(geometry, spatialRef);
169
+ Geometry general = GeometryEngine.Generalize(geometry, maxDeviation);
170
+ Geometry dense = GeometryEngine.Densify(geometry, maxSegmentLength);
171
+ Geometry clipped = GeometryEngine.Clip(geometry, clipEnvelope);
172
+ Geometry offset = GeometryEngine.Offset(geometry, distance);
173
+ Point center = GeometryEngine.Centroid(geometry);
174
+ Geometry boundary = GeometryEngine.Boundary(geometry);
175
+ double area = GeometryEngine.Area(geometry);
176
+ double length = GeometryEngine.Length(geometry);
177
+
178
+ // 大地测量
179
+ double geodesicDist = GeometryEngine.GeodesicDistance(point1, point2);
180
+ double geodesicArea = GeometryEngine.GeodesicArea(polygon);
181
+
182
+ // 邻近搜索
183
+ Proximity2DResult nearest = GeometryEngine.GetNearestCoordinate(geometry, point, testPolygonInterior);
184
+ Proximity2DResult nearest = GeometryEngine.GetNearestVertex(geometry, point);
185
+ Proximity2DResult[] results = GeometryEngine.GetNearestVertices(geometry, point, searchRadius, maxVertexCount);
186
+
187
+ // 序列化 / 反序列化
188
+ string wkt = GeometryEngine.GeometryToWkt(geometry);
189
+ Geometry fromWkt = GeometryEngine.GeometryFromWkt(wktString);
190
+ byte[] wkb = GeometryEngine.GeometryToWkb(geometry, bigEndian);
191
+ Geometry fromWkb = GeometryEngine.GeometryFromWkb(wkbBytes);
192
+ string json = GeometryEngine.GeometryToGeoJson(geometry);
193
+ Geometry fromJson = GeometryEngine.GeometryFromGeoJson(geoJsonString);
194
+ string esri = GeometryEngine.GeometryToEsriJson(geometry);
195
+ Geometry fromEsri = GeometryEngine.GeometryFromEsriJson(esriJsonString);
196
+ ```
197
+
198
+ ### 风格 2:Operator 单例模式
199
+
200
+ 每个算子都通过 `Instance` 单例属性获取(Lazy 初始化),适合需要更精细控制的场景:
201
+
202
+ ```csharp
203
+ using OpenGIS.Esri.Geometry.Core.Operators;
204
+
205
+ // 空间关系
206
+ bool contains = ContainsOperator.Instance.Execute(geom1, geom2);
207
+ bool intersects = IntersectsOperator.Instance.Execute(geom1, geom2);
208
+ double distance = DistanceOperator.Instance.Execute(geom1, geom2);
209
+ bool equals = EqualsOperator.Instance.Execute(geom1, geom2);
210
+ bool disjoint = DisjointOperator.Instance.Execute(geom1, geom2);
211
+ bool within = WithinOperator.Instance.Execute(geom1, geom2);
212
+ bool crosses = CrossesOperator.Instance.Execute(geom1, geom2);
213
+ bool touches = TouchesOperator.Instance.Execute(geom1, geom2);
214
+ bool overlaps = OverlapsOperator.Instance.Execute(geom1, geom2);
215
+
216
+ // 集合运算
217
+ Geometry union = UnionOperator.Instance.Execute(geom1, geom2);
218
+ Geometry intersection = IntersectionOperator.Instance.Execute(geom1, geom2);
219
+ Geometry difference = DifferenceOperator.Instance.Execute(geom1, geom2);
220
+ Geometry symDiff = SymmetricDifferenceOperator.Instance.Execute(geom1, geom2);
221
+
222
+ // 一元运算
223
+ Geometry buffer = BufferOperator.Instance.Execute(geometry, distance);
224
+ Geometry convexHull = ConvexHullOperator.Instance.Execute(geometry);
225
+ Geometry simplified = SimplifyOperator.Instance.Execute(geometry, tolerance);
226
+ Point centroid = CentroidOperator.Instance.Execute(geometry);
227
+ Geometry boundary = BoundaryOperator.Instance.Execute(geometry);
228
+ double area = AreaOperator.Instance.Execute(geometry);
229
+ double length = LengthOperator.Instance.Execute(geometry);
230
+ Geometry offset = OffsetOperator.Instance.Execute(geometry, distance);
231
+
232
+ // 大地测量
233
+ double geodesicDist = GeodesicDistanceOperator.Instance.Execute(point1, point2);
234
+ double geodesicArea = GeodesicAreaOperator.Instance.Execute(polygon);
235
+
236
+ // 邻近搜索
237
+ Proximity2DResult result = Proximity2DOperator.Instance.GetNearestCoordinate(geometry, point, testPolygonInterior);
238
+ Proximity2DResult result = Proximity2DOperator.Instance.GetNearestVertex(geometry, point);
239
+ Proximity2DResult[] results = Proximity2DOperator.Instance.GetNearestVertices(geometry, point, searchRadius, maxVertexCount);
240
+ ```
241
+
242
+ ---
243
+