标签
PostgreSQL , openstreetmap , 空间位置 , 点 , 线 , 面 , 行政地址 , 转换 , osm2pgsql , poi , 门牌 , 商圈 , 行政区
背景
空间位置(geometry 经纬、点、线、面...)、行政地址(门牌、商圈、行政区...) 相互转换需求,如果你有这方面的素材库,在PostgreSQL里面转换,性能是非常高效的。
例如输入任意一个空间对象,扫描出附近的空间对象,或者包含它的对象,或者它包含的对象。(构图)
输入任意一个空间对象,搜索离他最近的空间对象。
输入任意一个空间对象,以及其他的非空间过滤条件(使用btree_gist插件),搜索出附近的空间对象,或者包含它的对象,或者它包含的对象。或离他最近的空间对象。
DEMO
1、建表,存储空间、实体映射信息。
create table tbl_loc (
id int8 primary key,
level int2, -- 空间对象的级别(国、省、市、区、县、街道、建筑、街道)
pos geometry, -- 空间对象的位置(多边形、线段、点)
loc_name text -- 空间对象的描述
);
2、创建空间+级别复合索引
create extension btree_gist;
create index idx_tbl_loc_1 on tbl_loc using gist