Postgis函数ST_包含用于编写sql查询的
我在编写使用Postgis函数st_包含的查询时遇到了一些问题。我想展示科罗拉多州所有的市区。这里是查询的实际定义Postgis函数ST_包含用于编写sql查询的,sql,postgresql,postgis,Sql,Postgresql,Postgis,我在编写使用Postgis函数st_包含的查询时遇到了一些问题。我想展示科罗拉多州所有的市区。这里是查询的实际定义 Return the names (name10) of all urban areas (in alphabetical order) that are entirely contained within Colorado. Return the results in alphabetical order. (64 records) 我使用的表是tl_2010_us_stat
Return the names (name10) of all urban areas (in alphabetical order) that are entirely contained
within Colorado. Return the results in alphabetical order. (64 records)
我使用的表是tl_2010_us_state10(它存储各州的信息)。我想我将在这个表中使用name10变量,因为它包含所有州的名称
Table "public.tl_2010_us_state10"
Column | Type | Modifiers
------------+-----------------------------+-------------------------------------
gid | integer | not null default
region10 | character varying(2) |
division10 | character varying(2) |
statefp10 | character varying(2) |
statens10 | character varying(8) |
geoid10 | character varying(2) |
stusps10 | character varying(2) |
name10 | character varying(100) |
lsad10 | character varying(2) |
mtfcc10 | character varying(5) |
funcstat10 | character varying(1) |
aland10 | double precision |
awater10 | double precision |
intptlat10 | character varying(11) |
intptlon10 | character varying(12) |
coords | geometry(MultiPolygon,4326) |
Indexes:
"tl_2010_us_state10_pkey" PRIMARY KEY, btree (gid)
"tl_2010_us_state10_coords_gist" gist (coords)
然后我有一个表格,显示所有的城市信息。我想再次使用name10变量,因为它存储所有城市区域的名称
Table "public.tl_2010_us_uac10"
Column | Type | Modifiers
------------+-----------------------------+-------------------------------------
gid | integer | not null default
uace10 | character varying(5) |
geoid10 | character varying(5) |
name10 | character varying(100) |
namelsad10 | character varying(100) |
lsad10 | character varying(2) |
mtfcc10 | character varying(5) |
uatyp10 | character varying(1) |
funcstat10 | character varying(1) |
aland10 | double precision |
awater10 | double precision |
intptlat10 | character varying(11) |
intptlon10 | character varying(12) |
coords | geometry(MultiPolygon,4326) |
Indexes:
"tl_2010_us_uac10_pkey" PRIMARY KEY, btree (gid)
"tl_2010_us_uac10_coords_gist" gist (coords)
我在sql中编写的代码是
select a.name10 as urban_area
from tl_2010_us_uac10 as a
join tl_2010_us_state10 as b
on ST_Contains(b.gid = a.gid)
where b.name10 = 'Colorado'
order by a.name10;
但是我得到了这个错误
ERROR: function st_contains(integer, integer) does not exist
LINE 1: ...010_us_uac10 as a join tl_2010_us_state10 as b on ST_Contain...
^
HINT: No function matches the given name and argument types. You might need to add explicit
type casts.
需要两个参数,这两个参数都应为几何图形类型。因此,你犯了两个错误
select a.name10 as urban_area
from tl_2010_us_uac10 as a
join tl_2010_us_state10 as b
on ST_Contains(b.coords, a.coords)
where b.name10 = 'Colorado'
order by a.name10;
ST_Contains需要几何体列,但您正在传入gid,它是一个整数。它也是一个需要两个参数的函数,但有一个等式语句。试试ST_Contains(b.coords,a.coords)。好的,非常感谢!我知道我在正确的轨道上!如果你创建了一个实际的答案,我可以选择它作为正确的答案,并给你一些分数:)已添加为答案请不要重复类似的问题。我已经在评论中解释了你之前同样的问题的错误。安迪,你认为你能用st_Touchs帮我解决我的另一个问题吗?这是我的程序完成的最后一件事。如果你有时间看的话,这里有链接,再次感谢。