【问题标题】:Extract XY extent from WKT string从 WKT 字符串中提取 XY 范围
【发布时间】:2020-01-27 09:53:35
【问题描述】:

使用 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


    【解决方案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]
        return max(parsed_geom[::2]), min(parsed_geom[::2]), max(parsed_geom[1::2]), min(parsed_geom[1::2])
    

    【讨论】:

    • 你不需要在某处使用 float() 吗?
    • 是的,如果您希望输出为浮点数,那么您可以这样做
    【解决方案2】:

    如果你不介意对 GDAL/OGR 的依赖,你可以使用这个:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 2015-03-29
      • 2019-01-16
      相关资源
      最近更新 更多