将csv文件复制到PostGIS表中

时间:2017-02-16 06:53:50

标签: python postgis

我有两个包含两个多边形实际坐标的csv文件。我需要将csv文件的内容复制到名为' sample'的PostGIS表中。我需要找到两个多边形和交叉区域的交集。 enter image description here

我是PostGIS的新手。请帮帮我。

1 个答案:

答案 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'