在讨论GIS的polygon和multipolygon的时候
一定先确定数据载体
1、shp载体
shp是不区分polygon和Multipolygon的
上述的多面体只是代表三维,需要用ArcGIS Pro来新增
https://pro.arcgis.com/zh-cn/pro-app/help/editing/create-multipatch-features.htm
而不是代表MultiPolygon
这里顺便说一下ArcGIS产品线的变化
ArcGIS Desktop包含ArcGIS Pro和ArcMap,而不再代表ArcMap了。
2、wkt载体
简单面:
POLYGON((6 3,9 2,9 4,6 3)) 这是一个没有洞的
POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2))
这是一个有洞的!
备注:里面的小括号个数可以有多个,第1个被后面的那些挖洞!!
多面:
MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),((6 3,9 2,9 4,6 3)))
现在拿POLYGON((6 3,9 2,9 4,6 3)) 来讨论
一个简单的多边形,为啥非要用2个括号呢?一个括号明明就可以啊
这就是因为,我们把一个含有洞的面也被定义为“简单面”
所以,简单面统一变成2个括号
wkt参考如下
https://www.ibm.com/support/knowledgecenter/en/SS6NHC/com.ibm.db2.luw.spatial.topics.doc/doc/rsbp4120.html
里面说明了Z和M的情况,感觉不错,附录在此
和讨论的问题关系不大
3、geojson载体
geojson原理和wkt类似
只是内部coordinate使用数组,所以数组层次又多了一层
现在讨论另一个问题:
既然可以在geojson中根据多维数组的维度
来判断是不是polygon(3维数组)和multipolygon(4维数组)
那么我为啥还要传递type值呢?
上图为不带洞的polygon——3维数组
上图为带动的polygon——3维数组
上图为MultiPolygon——4维数组
回答上述问题:
原因就在于MultiLineString
上图为MultiLineString——3维数组