当前位置:  开发笔记 > 编程语言 > 正文

如何使用单点+多边形在GeoJSON中创建GeometryCollection?

如何解决《如何使用单点+多边形在GeoJSON中创建GeometryCollection?》经验,为你挑选了1个好方法。

如何将点作为单个要素添加到多边形?根据GeoJson规范,这被称为"GeometryCollection".

'GeometryCollection'的示例:

{ "type": "GeometryCollection",
"geometries": [
  { "type": "Point",
    "coordinates": [100.0, 0.0]
    },
  { "type": "LineString",
    "coordinates": [ [101.0, 0.0], [102.0, 1.0] ]
    }
 ]
}

我尝试在多边形特征中添加一个点,但我无法在地图集地图上显示它,因为我猜它是无效的GeoJson.

任何人都知道这样做的正确方法是什么?网上没有太多的例子可供使用.

我的看法:[jsfilddle]

var myRegions = {
 "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {},
      "geometries": [
        {
            "type": "Point",
            "coordinates": [
            61.34765625,
            48.63290858589535
            ]
      },
        {
        "type": "Polygon",
        "coordinates": [
          [
            [
              59.94140624999999,
              50.65294336725709
            ],
            [
              54.931640625,
              50.90303283111257
            ],
            [
              51.943359375,
              51.04139389812637
            ],
            [
              50.9765625,
              48.19538740833338
            ],
            [
              52.55859375,
              46.46813299215554
            ],
            [
              52.998046875,
              43.8028187190472
            ],
            [
              54.4921875,
              42.391008609205045
            ],
            [
              57.041015625,
              43.29320031385282
            ],
            [
              59.8974609375,
              45.398449976304086
            ],
            [
              62.5341796875,
              44.08758502824516
            ],
            [
              65.6982421875,
              45.73685954736049
            ],
            [
              68.37890625,
              48.3416461723746
            ],
            [
              65.8740234375,
              49.18170338770663
            ],
            [
              63.720703125,
              49.97948776108648
            ],
            [
              63.80859374999999,
              52.348763181988076
            ],
            [
              61.4794921875,
              52.32191088594773
            ],
            [
              59.9853515625,
              51.86292391360244
            ],
            [
              61.9189453125,
              51.09662294502995
            ],
            [
              60.5126953125,
              50.51342652633956
            ],
            [
              59.94140624999999,
              50.65294336725709
            ]
          ]
        ]
      }
   ]
  }
 ]
};

ghybs.. 8

如GeoJSON规范中所述,Feature对象只有一个 geometry成员,它是一个Geometry对象(或null).

要素对象必须具有名称的成员"geometry".几何成员的值是上面定义的几何对象或JSON null值.

在可能geometry的情况下,你确实可以使用a GeometryCollection,它必须有一个成员geometries.后者是其他几何的数组,即您的点,多边形等,甚至是另一个GeometryCollection.

几何集合必须具有名称的成员"geometries".对应的值"geometries"是一个数组.此数组中的每个元素都是GeoJSON几何对象.

所以在你的情况下,你可以简单地做一些事情:

var myRegions = {
  "type": "FeatureCollection",
  "features": [{
    "type": "Feature", // single feature
    "properties": {},
    "geometry": { // unique geometry member
      "type": "GeometryCollection", // the geometry can be a GeometryCollection
      "geometries": [ // unique geometries member
        { // each array item is a geometry object
          "type": "Point",
          "coordinates": [
            61.34765625,
            48.63290858589535
          ]
        },
        {
          "type": "Polygon",
          "coordinates": [
            [
              [
                59.94140624999999,
                50.65294336725709
              ],
              // more points…
              [
                59.94140624999999,
                50.65294336725709
              ]
            ]
          ]
        }
      ]
    }
  }]
};

更新了jsfiddle:http://jsfiddle.net/rh8ok5t8/18/



1> ghybs..:

如GeoJSON规范中所述,Feature对象只有一个 geometry成员,它是一个Geometry对象(或null).

要素对象必须具有名称的成员"geometry".几何成员的值是上面定义的几何对象或JSON null值.

在可能geometry的情况下,你确实可以使用a GeometryCollection,它必须有一个成员geometries.后者是其他几何的数组,即您的点,多边形等,甚至是另一个GeometryCollection.

几何集合必须具有名称的成员"geometries".对应的值"geometries"是一个数组.此数组中的每个元素都是GeoJSON几何对象.

所以在你的情况下,你可以简单地做一些事情:

var myRegions = {
  "type": "FeatureCollection",
  "features": [{
    "type": "Feature", // single feature
    "properties": {},
    "geometry": { // unique geometry member
      "type": "GeometryCollection", // the geometry can be a GeometryCollection
      "geometries": [ // unique geometries member
        { // each array item is a geometry object
          "type": "Point",
          "coordinates": [
            61.34765625,
            48.63290858589535
          ]
        },
        {
          "type": "Polygon",
          "coordinates": [
            [
              [
                59.94140624999999,
                50.65294336725709
              ],
              // more points…
              [
                59.94140624999999,
                50.65294336725709
              ]
            ]
          ]
        }
      ]
    }
  }]
};

更新了jsfiddle:http://jsfiddle.net/rh8ok5t8/18/

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有