Sql 地理层次识别资源

Sql 地理层次识别资源,sql,postgresql,geolocation,geospatial,postgis,Sql,Postgresql,Geolocation,Geospatial,Postgis,我目前正在从事一个涉及地理位置的项目,我们的计划需要说明位置a是否包含在位置B中。目前,我们使用地理名称中的管理代码来执行该项目,例如纽约市包含在美国,因为它与美国具有相同的国家代码。但是,由于缺少数据,这种方法并不总是有效,我们正在研究其他方法。如果您能提供有关以下任何一项的信息,这将非常有帮助: 大多数地理编码软件如何查找层次信息?他们是否使用管理代码或查看多边形 使用PostGIS或lucene检查多边形A是否包含在多边形B内或与多边形B相交的速度有多快?我从未使用过多边形-你知道有任何教

我目前正在从事一个涉及地理位置的项目,我们的计划需要说明位置a是否包含在位置B中。目前,我们使用地理名称中的管理代码来执行该项目,例如纽约市包含在美国,因为它与美国具有相同的国家代码。但是,由于缺少数据,这种方法并不总是有效,我们正在研究其他方法。如果您能提供有关以下任何一项的信息,这将非常有帮助:

大多数地理编码软件如何查找层次信息?他们是否使用管理代码或查看多边形

使用PostGIS或lucene检查多边形A是否包含在多边形B内或与多边形B相交的速度有多快?我从未使用过多边形-你知道有任何教程解释如何使用它们吗

是否有资源可以免费提供有关地理位置的多边形信息?我认为OpenStreetMap提供了它,但planet.osm的大小超过900 GB,而我们目前的容量约为30GB。我们不需要关于街道和地址的广泛信息,但我们需要建立城市/村庄级别的等级制度。我也查看了DBPedia,但它似乎包含的信息比GeoNames少得多


非常感谢

以下是关于您的问题的一些想法:

大多数地理编码软件如何查找层次信息?他们是否使用管理代码或查看多边形

要知道大多数软件是如何工作的几乎是不可能的,但我可以告诉你,如果它们只依赖邮政编码之类的数据,而不是检查它们是否在给定的空间和时间内,那么就没有必要使用任何GIS。当然,使用地理编码的速度要快得多,但在涉及任何空间操作(如覆盖、接触、重叠、相交等)时都有其局限性

使用PostGIS或lucene检查多边形A是否包含在多边形B内或与多边形B相交的速度有多快?我从未使用过多边形-你知道有任何教程解释如何使用它们吗

使用PostGIS绝对是无痛的

示例:考虑以下Bbox多边形1445 35.77、14.56 35.57、14.56 35.80、14.45 35.80、14.45 35.87:

此示例使用以下函数检查点14.48 35.85是否位于给定多边形的内部:

现在,使用给定多边形外部的点14.35.95进行相同的实验:

是否有资源可以免费提供有关地理位置的多边形信息?我认为OpenStreetMap提供了它,但planet.osm的大小超过900 GB,而我们目前的容量约为30GB。我们不需要关于街道和地址的广泛信息,但我们需要建立城市/村庄级别的等级制度。我也查看了DBPedia,但它似乎包含的信息比GeoNames少得多

这实际上取决于您的需求粒度、准确性、覆盖率等。。web上有许多免费的形状文件源,例如:

如果您想知道如何将shapefile导入PostGIS,请检查

您可以在此处使用此网站来可视化您熟知的文本文字:


非常感谢你!这非常有用!看起来使用shapefile提供了很多优势,我将查看您建议的阅读资料……关于粒度/覆盖率/准确性,我们不需要特定的街道地址或邮政编码,即使在知名度较高的城市也不需要,但我们需要能够以相当高的精确度对一些相当偏远、不太知名的村庄进行地理编码。。。。
db=# SELECT ST_Within('POINT(14.48 35.85)'::GEOMETRY,'POLYGON((14.45 35.87,14.56 35.87,14.56 35.80,14.45 35.80,14.45 35.87))'::GEOMETRY);
 st_within 
-----------
 t
(1 row)
db=# SELECT ST_Within('POINT(14.35 35.95)'::GEOMETRY,'POLYGON((14.45 35.87,14.56 35.87,14.56 35.80,14.45 35.80,14.45 35.87))'::GEOMETRY);
 st_within 
-----------
 f
(1 row)