GeoJSON中线要素MultiLineString类型与LineString类型的区别

一、GeoJSON中MulitLineString类型与LineString类型的主要区别如下:

    1)一个MultiLineString要素中可以包含一条或多条互不相连的线段,这些线段被当做同一个要素,共享同一份属性信息。一个LineString类型的要素中只能包含一条线段,属性信息被这条线段所独享;

    2)当有多条相邻的属性信息相同的线段时,使用MultiLineString类型,只要一个要素(数据库中的一条记录)即可表示,而使用LineString类型,却需要创建多个要素。因此,不难发现MultiLineString类型更节省存储空间;

    3)GeoJSON文件中,LineString类要素的coordinates属性用二维数组表示,而MultiLineString类要素用三维数组表示;

{
    "type": "Feature",
    "geometry": {
        "type": "MultiLineString",
        "coordinates": [
            [
                [119.283461766823521,35.113845473433457],
                [119.285033114198498,35.11405167501087]
            ],
            [
                [119.186893667167482,34.88690637041627],
                [119.186947247282234,34.890273599368562]
            ]
        ]
    }
}
{ 
    "type": "Feature",
    "geometry": {
        "type": "LineString",
        "coordinates": [
            [119.207185494071,34.9298513918505],
            [119.207555586034,34.9294932576001]
        ]
    }
}

    4)常用的shp格式的矢量文件中线要素用Polyline类型表示,并不严格区分LineString与MultiLineString。

二、下面是MultiLineString类型的图层和LineString类型的图层在Arcgis中的展示效果。

 在MultiLineString图层和LineString图层中都只选中了一个要素,然而在MultiLineString图层中却有三条线段被选中了。并且,在MultiLineString图层中,无法单独选中这三条线段中的某一条。

 可见这三条线段被当做一个整体,即一个MultiLineString要素。

三、当一份GeoJSON文件中,既包含MultiLineSting类型的要素又包含LineString类型的要素时,处理起来会比较繁琐。此时,一个比较好的做法是把所有的线要素都转为LineString类型,处理方法如下:

    1)把GeoJSON文件转化为shp文件(可以使用QGIS来转);

    2)Arcgis中的要素转线工具(Data Management Tools -> Features -> Feature To Line)可以将所有的线要素都转为LineString类型;

    3)利用Arcgis中的要素转JSON工具(Conversion Tools -> JSON -> Features To JSON)将shp文件转回GeoJson文件。

另外,GeoJSON中MulitLineString类型对应Arcgis中的Multipart line类型(可以翻译为“多部分线”)。Arcgis中类似的概念,还有Multipoint(多点)、Multipart polygon(多部分多边形)。

原文地址:https://www.cnblogs.com/ben-/p/14597447.html