我有两个包含两个多边形实际坐标的csv文件。我需要将csv文件的内容复制到名为' sample'的PostGIS表中。我需要找到两个多边形和交叉区域的交集。 enter image description here
我是PostGIS的新手。请帮帮我。
答案 0 :(得分:3)
假设WGS84:
首先创建表
create table sample (lat float, lon float);
然后将csv插入表中(可能需要使用分隔符进行一些调整)。
copy sample from 'path_to_csv' delimiter ';' csv;
然后将lat lon转换为点(因此假设WGS84,SRID 4326):
alter table sample add column geom geometry(point, 4326)
using st_setsrid(st_makepoint(lon, lat),4326);
然后通过首先创建一个线串,然后创建一个多边形,从点表创建多边形。确保线串关闭,这意味着第一个点必须等于最后一个点!
select st_makepolygon(st_makeline(geom)) geom
into polygon1
from sample;
获取两个多边形的交叉区域:
select filename, st_makepolygon(st_makeline(geom)) geom
into polygons
from sample
group by filename;
select st_area(st_intersection(a.geom,b.geom))
from polygons a, polygons b
where a.filename == 'part1' and b.filename == 'part2'