Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svg 从矢量图层导出的平面坐标中获取几何图形_Svg_Coordinates_Openlayers_Openlayers 6 - Fatal编程技术网

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

我们有一个矢量文件层,我们希望从中检索各个几何图形以构建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.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 ]
  ]
]