Svg 从矢量图层导出的平面坐标中获取几何图形
我们有一个矢量文件层,我们希望从中检索各个几何图形以构建svg。存在具有孔的多边形,因此Svg 从矢量图层导出的平面坐标中获取几何图形,svg,coordinates,openlayers,openlayers-6,Svg,Coordinates,Openlayers,Openlayers 6,我们有一个矢量文件层,我们希望从中检索各个几何图形以构建svg。存在具有孔的多边形,因此平面坐标数组本身无法提供足够的信息来重建具有孔的多边形 平面坐标:阵列(38) 0: 1767257.5351531499 1: 6175806.137329102 2: 1767786.0255440278 3: 6175733.2832865175 4: 1767836.7845081235 5: 6175407.828752021 6: 1767832.0071938557 7: 6175403.051
平面坐标
数组本身无法提供足够的信息来重建具有孔的多边形
平面坐标:阵列(38)
0: 1767257.5351531499
1: 6175806.137329102
2: 1767786.0255440278
3: 6175733.2832865175
4: 1767836.7845081235
5: 6175407.828752021
6: 1767832.0071938557
7: 6175403.051437754
8: 1767182.889617715
9: 6175493.223244559
10: 1767178.7094677307
11: 6175499.792051678
12: 1767205.5818604873
13: 6175599.518487018
14: 1767243.80037463
15: 6175738.657765068
16: 1767257.5351531499
17: 6175806.137329102
18: 1767673.1614944504
19: 6175498.597723111
20: 1767664.8011944818
21: 6175498.597723111
22: 1767664.2040301983
23: 6175490.834587425
24: 1767673.1614944504
25: 6175490.2374231415
26: 1767673.1614944504
27: 6175498.597723111
28: 1767502.372509376
29: 6175583.395051364
30: 1767494.012209407
31: 6175583.395051364
32: 1767494.6093736906
33: 6175575.034751396
34: 1767501.7753450924
35: 6175575.034751396
36: 1767502.372509376
37: 6175583.395051364
长度:38
OpenLayers必须在某个时候访问原始几何体。否则它无法正确显示孔。如何从平面坐标重建原始几何体
编辑:我的末端是
[18,28,38]
OpenLayers似乎将所有几何图形展平以供内部使用(可能是出于性能原因)。
如果您可以访问特征的“端点”特性,则可以使用以下方法膨胀几何体:
这有两个作用:
- 它将坐标重新配对成单独的x/y阵列
- 在每个端点索引处(这是从
获得的数组),它都会创建一个新的几何体,从而生成多个几何体feature.getEnds()
feature.getEnds()
返回[18,28,38]
(如您的评论中所述),则充气坐标阵列
函数将返回以下数组:
[
[
[ 1767257.535153149, 6175806.435911242 ],
[ 1767786.3241261686, 6175732.984704374 ],
[ 1767837.0830902644, 6175407.82875202 ],
[ 1767832.0071938548, 6175402.752855611 ],
[ 1767182.889617714, 6175492.924662416 ],
[ 1767178.410885588, 6175499.493469534 ],
[ 1767205.8804426282, 6175599.518487017 ],
[ 1767243.800374629, 6175738.359182926 ],
[ 1767257.535153149, 6175806.435911242 ]
],
[
[ 1767664.8011944809, 6175498.59772311 ],
[ 1767664.2040301973, 6175490.834587424 ],
[ 1767672.862912308, 6175490.237423141 ],
[ 1767672.862912308, 6175498.299140967 ],
[ 1767664.8011944809, 6175498.59772311 ]
],
[
[ 1767494.3107915479, 6175583.395051363 ],
[ 1767494.3107915479, 6175575.034751395 ],
[ 1767501.7753450915, 6175575.034751395 ],
[ 1767502.372509375, 6175583.096469222 ],
[ 1767494.3107915479, 6175583.395051363 ]
]
]
请注意,该函数如何同时计算每个几何体的第一个坐标,并在最后一个位置重复,从而关闭每个几何体。您的数据只是一个数字数组,而不是坐标对(x,y)或三元组(x,y,z)…是的。看起来,即使条目是x坐标,不均匀条目也是y坐标。欢迎使用SO!:)例如,如果我的目标是
[18,28,38]
,结果会是什么?谢谢!有了这三个端点索引,它将输出三个几何体,我更新了我的答案,在本例中包含了输出。
[
[
[ 1767257.535153149, 6175806.435911242 ],
[ 1767786.3241261686, 6175732.984704374 ],
[ 1767837.0830902644, 6175407.82875202 ],
[ 1767832.0071938548, 6175402.752855611 ],
[ 1767182.889617714, 6175492.924662416 ],
[ 1767178.410885588, 6175499.493469534 ],
[ 1767205.8804426282, 6175599.518487017 ],
[ 1767243.800374629, 6175738.359182926 ],
[ 1767257.535153149, 6175806.435911242 ]
],
[
[ 1767664.8011944809, 6175498.59772311 ],
[ 1767664.2040301973, 6175490.834587424 ],
[ 1767672.862912308, 6175490.237423141 ],
[ 1767672.862912308, 6175498.299140967 ],
[ 1767664.8011944809, 6175498.59772311 ]
],
[
[ 1767494.3107915479, 6175583.395051363 ],
[ 1767494.3107915479, 6175575.034751395 ],
[ 1767501.7753450915, 6175575.034751395 ],
[ 1767502.372509375, 6175583.096469222 ],
[ 1767494.3107915479, 6175583.395051363 ]
]
]