从WKT字符串中提取XY范围

问题描述 投票:1回答:2

使用python,如何提取WKT多边形的XY范围?我需要gdal兼容格式,例如:minx miny maxx maxy

所以例如下面,我需要将wkt转换为wkt_extent

wkt = "Polygon ((366247 156971, 366247 174054, 383331 174054, 383331 156971, 366247 156971))"
# need xy bounding box coordinates of wkt, as shown below
wkt_extent = "366247 156971 383331 174054"

[请注意,wkt并不总是矩形/正方形,也不总是像此处显示的示例wkt那样沿顺时针方向“绘制”。

SRID在这里是27700,单位是米。

python gdal wkt
2个回答
1
投票

假设您的WKT以字符串形式传递:

def parse_geometry(geometry):
    regex = r'[0-9\.]+'
    parsed_geom = re.findall(regex, geometry)
    parsed_geom = [float(i) for i in parsed_geom]
    max_x = max(parsed_geom[::2])
    min_x = min(parsed_geom[::2])
    max_y = max(parsed_geom[1::2])
    min_y = min(parsed_geom[1::2])
    return [max_x, min_x, max_y, min_y]

0
投票

如果您不介意依赖GDAL / OGR,则可以使用此方法:

geom = ogr.CreateGeometryFromWkt(wkt)
extent = geom.GetEnvelope()

范围将是一个元组:(366247.0, 383331.0, 156971.0, 174054.0)

具有额外的依赖关系当然是不利的,但是OGR确实会为您处理解析/验证。

© www.soinside.com 2019 - 2024. All rights reserved.