【问题标题】:How to find bounding boxes for Geocode radius Searches如何找到地理编码半径搜索的边界框
【发布时间】:2012-03-22 00:16:55
【问题描述】:

如果我想查找邮政编码范围内的所有餐馆,我可以对地址进行字符串搜索,如果我想查找邮政编码 10 英里范围内的所有餐馆,我需要进行位置搜索。我有一个充满地址的数据库,地理编码应该没问题。但是如何计算不规则形状区域(如邮政编码、城市、州或都会区)的边界框?

有没有这样的工具?这些信息在某处出售吗?

我最初的解决方案是通过搜索其中的所有地址并推导出围绕它们的最简单的多边形并将其用作边界框来创建区域的估计值。然而,这似乎是一种非常暴力的方法。我是否对数据库中的每个城市、州和邮编进行此计算并将其存储?其他人是如何解决这个问题的?

【问题讨论】:

    标签: search location geocode


    【解决方案1】:

    Maponics 等公司有邻里、县、市、州、省、乡镇等的多边形数据。可能还有其他提供者。

    其中许多多边形都有大量的点,因此您应该:

    • 计算边界框,或

    • 预先计算每个地址的邮编、街区、城市等标识符,并按这些区域索引搜索集合。

    但是,为什么要通过存储地点数据库和自行计算地理数据来构建应用程序呢?您可以与CityGrid 等提供商合作;他们为可以按街区、邮编等搜索的地方提供 API;您可以在自己的本地应用程序中免费使用他们的数据。

    【讨论】:

    • Maponics 似乎可行。谢谢。不能使用城市网格或其同类,因为它们的使用条款不是针对我正在做的事情。
    【解决方案2】:

    如果您碰巧将 PostgreSQL 用于您的数据库,您可以使用 box(geometry) 或其变体来计算几何的边界框。您还可以在 SQL 中为几何图形隐式使用边界框。例如(来自Using PostGIS: Data Management and Queries):

    SELECT road_id, road_name FROM roads WHERE roads_geom && ST_GeomFromText('POLYGON((...))',-1);

    其中 && “判断一个几何图形的边界框是否与另一个几何图形的边界框相交”。 要获取几何集合的边界框,您可以先使用CollectUnion 将所有几何聚合或组合在一起。

    当然,如果你不使用 PostGIS,功能真的来自GEOS,这是 PostGIS 实际使用的底层库。可以直接使用基本几何函数(例如来自 python)来做你想做的事情。

    【讨论】:

    • 谢谢,但我明白这一点,问题在于确定边界框坐标。一个点的半径很简单,计算邮政编码的形状并不简单。
    • 啊...那么 Maponics 可能是您的一个很好的解决方案。如果你想要免费的东西,你可以试试美国人口普查数据(例如,census.gov/geo/www/tiger/tgrshp2010/tgrshp2010.html)。此外,如果您想为每个城市、州、邮编等创建自己的边界框,您只需找到这些类型的每个元素的最小和最大纬度和经度。
    猜你喜欢
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 2014-04-30
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多