MULTIPOLYGON(多边形组)数据格式
- 一个多边形组由多个(2个及以上)多边形(polygon)构成,每个多边形分别绘制,互不干扰。
- 一个多边形由多个(3个及以上)点构成,顺序连接这些点,绘制多边形。
- 一个点由经度值和纬度值构成,经度值在前,纬度值在后,经度值和纬度值都必须有值,经度值和纬度值之间使用1或多个空格分隔。
- 点与点之间使用英文逗号分隔,点与点之间除了存在英文逗号,还可以存在空格。
- 点集合使用
((和))包裹,构成一个polygon。 - polygon之间使用英文逗号分隔,polygon与polygon之间除了必须存在的英文逗号,还可以存在空格。
- polygon集合用"MULTIPOLYGON
(和)包裹。
MULTIPOLYGON文本demo
MULTIPOLYGON (((116.410188 39.879957, 116.410703 39.897555, 116.402292 39.892353, 116.389846 39.891365)),((116.355492 39.903757, 116.367659 39.87677, 116.359377 39.879167, 116.322297 39.873318, 116.326933 39.892616, 116.339549 39.898345)))
校验正则的实现
- 经度值/纬度值
(\d+|\d+\.\d+)
点: 经度和纬度之间用1或多个空格分隔
(\d+|\d+\.\d+)\s+(\d+|\d+\.\d+)
- 一个
点和后缀
后缀
(\s*,\s*(?=\d)|\s*(?=\)\)))
点和后缀
((\d+|\d+\.\d+)\s+(\d+|\d+\.\d+)(\s*,\s*(?=\d)|\s*(?=\)\))))
- 一个
polygon
(\(\((((\d+|\d+\.\d+)\s+(\d+|\d+\.\d+)(\s*,\s*(?=\d)|\s*(?=\)\)))){3,})\)\))
- 一个
polygon及后缀
- 后缀
(\s*,\s*(?=\(\()|\s*(?=\)))
polygon及后缀
(\(\((((\d+|\d+\.\d+)\s+(\d+|\d+\.\d+)(\s*,\s*(?=\d)|\s*(?=\)\)))){3,})\)\)(\s*,\s*(?=\(\()|\s*(?=\))))
- 最终实现
^\s*MULTIPOLYGON\s*\((\(\((((\d+|\d+\.\d+)\s+(\d+|\d+\.\d+)(\s*,\s*(?=\d)|\s*(?=\)\)))){3,})\)\)(\s*,\s*(?=\(\()|\s*(?=\)))){2,}\)\s*$