使用地理定位数据构建多边形的问题
Issues Building A Polygon with Geolocated Data
我在使用已经定位的数据在 BigQuery 中构建多边形时遇到问题。当我根据对此事发布的其他问题的阅读使用以下查询来构建它时,我收到此错误,在阅读与此事相关的许多其他问题后我无法解决该错误。我能得到这方面的帮助吗?我已经发布了我正在使用的数据作为 pandas 数据框,为大家提供一个合适的参考点。
错误信息:
ST_MakePolygon 失败:无效的多边形循环:边 1 与边 7 有重复的顶点
查询:
WITH Table as (SELECT DISTINCT location, latitude, longitude FROM dataset.table
WHERE latitude is not null and longitude is not null)
SELECT County, PRECINCT_NAME, ST_MAKEPOLYGON(ST_MAKELINE(ARRAY_AGG(ST_GEOGPOINT(longitude, latitude)))) as geom
FROM Table
Group By location
供参考的数据集:
import pandas as pd
df=pd.DataFrame(data=[('location', 'location', 'location', 'location', 'location', 'location'), (-84.2996966, -84.31496, -84.31463, -84.29973, -84.29918, -84.29949),
(39.1699112, 39.219543, 39.21876, 39.16986, 39.17092, 39.17686)], columns=['location', 'longitude', 'latitude'])
而不是失败
ST_MAKEPOLYGON(ST_MAKELINE(ARRAY_AGG(ST_GEOGPOINT(longitude, latitude)))) as geom
你可以试试下面
ST_CONVEXHULL(ST_UNION_AGG(ST_GEOGPOINT(longitude, latitude))) as geom
如果 运行 这对于您问题中的样本数据 - 结果是
POLYGON((-84.31496 39.219543, -84.29973 39.16986, -84.2996966 39.1699112, -84.29918 39.17092, -84.29949 39.17686, -84.31463 39.21876, -84.31496 39.219543))
我在使用已经定位的数据在 BigQuery 中构建多边形时遇到问题。当我根据对此事发布的其他问题的阅读使用以下查询来构建它时,我收到此错误,在阅读与此事相关的许多其他问题后我无法解决该错误。我能得到这方面的帮助吗?我已经发布了我正在使用的数据作为 pandas 数据框,为大家提供一个合适的参考点。
错误信息:
ST_MakePolygon 失败:无效的多边形循环:边 1 与边 7 有重复的顶点
查询:
WITH Table as (SELECT DISTINCT location, latitude, longitude FROM dataset.table
WHERE latitude is not null and longitude is not null)
SELECT County, PRECINCT_NAME, ST_MAKEPOLYGON(ST_MAKELINE(ARRAY_AGG(ST_GEOGPOINT(longitude, latitude)))) as geom
FROM Table
Group By location
供参考的数据集:
import pandas as pd
df=pd.DataFrame(data=[('location', 'location', 'location', 'location', 'location', 'location'), (-84.2996966, -84.31496, -84.31463, -84.29973, -84.29918, -84.29949),
(39.1699112, 39.219543, 39.21876, 39.16986, 39.17092, 39.17686)], columns=['location', 'longitude', 'latitude'])
而不是失败
ST_MAKEPOLYGON(ST_MAKELINE(ARRAY_AGG(ST_GEOGPOINT(longitude, latitude)))) as geom
你可以试试下面
ST_CONVEXHULL(ST_UNION_AGG(ST_GEOGPOINT(longitude, latitude))) as geom
如果 运行 这对于您问题中的样本数据 - 结果是
POLYGON((-84.31496 39.219543, -84.29973 39.16986, -84.2996966 39.1699112, -84.29918 39.17092, -84.29949 39.17686, -84.31463 39.21876, -84.31496 39.219543))