2017-02-16 24 views
0

У меня есть два файла csv, содержащие фактические координаты двух полигонов. Мне нужно скопировать содержимое csv-файлов в таблицу PostGIS с именем «sample». Мне нужно найти пересечение двух многоугольников и области пересечения. enter image description hereCOPY csv файл в таблицу PostGIS

Я новичок в PostGIS. Пожалуйста, помогите мне.

+0

является достаточно широкой темой ... Что вы уже пробовали? Вы читали это? https://www.postgresql.org/docs/9.6/static/sql-copy.html –

ответ

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); 

затем создать полигон из таблицы точек, сначала создавая LineString, то многоугольник. Убедитесь, что линия linestring закрыта, это означает, что первая точка должна быть равна последней точке!

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' 
+0

Я вставил новое поле «имя файла» в первый файл csv и ввел его значение как «part1» и позже (второй файл csv) обозначенном «part2». Я сгруппировал записи таблицы на основе своего «имени файла». Мне нужно найти область пересечения кластера part1 и кластера part2. – Aami

+0

Я добавил раздел, чтобы добраться до области пересечения двух полигонов. – kdd

 Смежные вопросы

  • Нет связанных вопросов^_^