我在postgresql / postgis上有多个数据库。 基本上它是每个国家的数据库(可能是小型的大陆)。 我使用osm2pgsql导入数据并且运行良好。 我想创建一个web服务器,它将lat / lon坐标作为输入,然后将访问正确的DB。 为了做到这一点,我想我需要创建整个数据库的几何对象/多边形(同样,每个县有一个数据库),检查指定的纬度/经度点是否在多边形中并将查询发送到正确的数据库 如何创建这样的几何/多边形?
谢谢, 辖。
答案 0 :(得分:2)
将数据库任务分区为多个PostgreSQL数据库通常是错误的方法。虽然这种方法可能与其他数据库软件很好,但它不适用于PostreSQL。这是因为执行跨数据库查询很麻烦,因为您可能需要为此类查询执行此操作。最好将其分区为单个数据库中的多个模式。但是,如果您有一百万或更少的功能(行),只需将所有内容与索引的国家/地区字段保存在同一个表中即可。这样,在地图上查看或使用SQL查询时,数据将是无缝的。
至于你的point-in-polygon问题,这是最基本的GIS问题,你会发现许多其他问题。您需要一个表示国家或行政区域(例如http://www.gadm.org/)的多边形表,理想情况下具有GiST索引,并使用ST_Contains或ST_Within来确定该点所在的多边形。