【发布时间】:2012-12-12 11:50:02
【问题描述】:
假设我的数据库中有许多几何图形。我想在 PostgreSQL 中创建一个函数,借此我可以传入 lat/long 并让它返回给定半径的距离(线性和道路)最近的几何图形。
我是这方面的新手,所以任何建议都值得赞赏。
我正在运行以下版本:
- PostgreSQL:9.2
- PostGIS:2.0
这是架构:
-- ----------------------------
-- Table structure for "cities-usa"
-- ----------------------------
DROP TABLE IF EXISTS "cities-usa";
CREATE TABLE "cities-usa" (
"gid" int4 NOT NULL DEFAULT nextval('"cities-usa_gid_seq"'::regclass),
"st_fips" varchar(4),
"sfips" varchar(2),
"county_fip" varchar(4),
"cfips" varchar(4),
"pl_fips" varchar(7),
"id" varchar(20),
"name" varchar(39),
"elevation" varchar(60),
"pop_1990" numeric,
"population" varchar(30),
"st" varchar(6),
"state" varchar(16),
"warngenlev" varchar(16),
"warngentyp" varchar(16),
"watch_warn" varchar(3),
"zwatch_war" float8,
"prog_disc" int4,
"zprog_disc" float8,
"comboflag" float8,
"land_water" varchar(16),
"recnum" float8,
"lon" float8,
"lat" float8,
"geom" "geometry"
)
WITH (OIDS=FALSE);
ALTER TABLE "cities-usa" OWNER TO "postgres";
-- ----------------------------
-- Primary key structure for table "cities-usa"
-- ----------------------------
ALTER TABLE "cities-usa" ADD CONSTRAINT "cities-usa_pkey" PRIMARY KEY ("gid") NOT DEFERRABLE INITIALLY IMMEDIATE;
【问题讨论】:
-
PostgreSQL 和 PostGIS 版本?有关您的数据库架构的一些信息?请详细说明。
-
对于模式,我有一个美国城市表,字段包括 gid (int4),st_fips (varchar(4),county_fip (varchar(4) cfips varchar(4),pl_fips varchar(7) ),id varchar(20),name varchar(39),elevation varchar(60),pop_1990 numeric,pop_1990 numeric,pop_1990 varchar(30),st varchar(6),state varchar(16),warngenlev varchar(16),warngentyp varchar( 16),watch_warn varchar(3),zwatch_war float8,prog_disc int4,zprog_disc float8,comboflag float8,land_water varchar(16),recnum float8,lon float8,lat float8,geom geometry.
-
@craig-ringer,我正在寻找一种功能,我可以将它称为 WhatAmINear(lat, long, radius, num) 并让它返回最近的 num 个城市给定半径。例如,如果我将其命名为 WhatAmINear(lat1, lon1, 100, 5),它将返回距离我所在位置 100 英里半径内最近的 5 个城市。如果小于 5 在该范围内,则只返回那些。
-
您似乎没有阅读我评论的第一部分。 请提供版本。编辑您的问题并添加您在评论中添加的架构、您的版本以及您认为相关的任何其他信息。
-
谢谢,@craig-ringer。我昨天确实最初放入了版本,但保存时遇到了问题。我一定是不小心删除了它们。版本和 SQL 已发布。感谢您的意见。
标签: postgresql geolocation openlayers geospatial postgis