Создание полигонов по координатам txt

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
4endyr'
Интересующийся
Сообщения: 29
Зарегистрирован: 07 окт 2011, 08:03
Репутация: 0
Откуда: Саранск

Создание полигонов по координатам txt

Сообщение 4endyr' » 19 июн 2014, 14:13

Есть у меня координаты около 5000 в txt, они идут сплошняком с замыкающей точкой, мне надо построить полигоны. через какую программу это проще всего сделать автоматизированно?

пример
401966.67 2303353.66
402007.31 2303356.64
402006.28 2303372.24
402009.37 2303372.54
402008.94 2303378.60
402005.63 2303378.40
402005.38 2303380.16
401979.52 2303379.24
401969.51 2303378.94
401964.64 2303378.38
401965.04 2303371.46
401965.59 2303365.40
401966.67 2303353.66 <= замыкающая точка
401955.94 2303377.88
401931.84 2303375.18
401877.18 2303373.65
401881.13 2303350.52
401934.00 2303350.94
401958.29 2303352.61
401955.94 2303377.88

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Создание полигонов по координатам txt

Сообщение trir » 19 июн 2014, 15:15

компилятор...

4endyr'
Интересующийся
Сообщения: 29
Зарегистрирован: 07 окт 2011, 08:03
Репутация: 0
Откуда: Саранск

Re: Создание полигонов по координатам txt

Сообщение 4endyr' » 19 июн 2014, 15:37

trir писал(а):компилятор...
так и придется идти еще и на программиста учиться? :)

Аватара пользователя
jerry-maori
Гуру
Сообщения: 585
Зарегистрирован: 22 авг 2012, 17:02
Репутация: 143
Откуда: Нижний Новгород

Re: Создание полигонов по координатам txt

Сообщение jerry-maori » 19 июн 2014, 19:12

ну если исходники именно в таком виде, как написано, то парсить полюбому придётся... причём чем-нито самописным... дальше смотреть, в чём именно вы хотите получить полигоны... ArcGIS, QGIS, *некоторый_иной*GIS.
И уже курить конкретную прогу -- чо она может, чо нет...
Пока инфы маловато... Нужно больше конкретики для бога конкретики...
Но от кодинга, как показывает практика, никуда не денешься...
Я вообще кандидатскую защищал по экологии, однако что-то последнее время больше matlab и js в моём арсенале;)

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Создание полигонов по координатам txt

Сообщение gamm » 19 июн 2014, 19:53

написать программу, которая переводит все это в MIF/MID - дело примерно получаса ... так что нужно учить программирование :-)

4endyr'
Интересующийся
Сообщения: 29
Зарегистрирован: 07 окт 2011, 08:03
Репутация: 0
Откуда: Саранск

Re: Создание полигонов по координатам txt

Сообщение 4endyr' » 20 июн 2014, 07:37

ну по сути это ведь простейшее действие, я думал это уже реализовано в ГИСах Mapinfo, Панорама и т. д. последняя кстати строит по координатам из файла, но не разделяет по объектам, сплошная линия получается =(

4endyr'
Интересующийся
Сообщения: 29
Зарегистрирован: 07 окт 2011, 08:03
Репутация: 0
Откуда: Саранск

Re: Создание полигонов по координатам txt

Сообщение 4endyr' » 20 июн 2014, 07:41

jerry-maori писал(а): в чём именно вы хотите получить полигоны...
ды хорошо было бы MIF/MID, а там уже в любую гис можно запихнуть

trir
Гуру
Сообщения: 5355
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Создание полигонов по координатам txt

Сообщение trir » 20 июн 2014, 08:36

Формат - дело десятое, главное выбрать язык/среду. Самое простой вариант - python/QGIS, я бы выбрал C#/dotSpatial. А самый радикальный вариант C++/GDAL.

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Создание полигонов по координатам txt

Сообщение Донецков » 20 июн 2014, 08:48

Если количество полигонов относительно невелико, то из txt в csv (или для каждого полигона свой csv, или вводить кодирование точек по принадлежности к полигону (можно полуавтоматом в Excel)...
А далее из csv генерация полигонов в выбранной ГИС, модули есть почти для каждой...

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Создание полигонов по координатам txt

Сообщение gamm » 20 июн 2014, 09:03

trir писал(а):Формат - дело десятое, главное выбрать язык/среду. Самое простой вариант - python/QGIS, я бы выбрал C#/dotSpatial. А самый радикальный вариант C++/GDAL.
самый простой вариант - написать на R (ну не люблю я Питона за отсутствие операторных скобок)

проекцию поставил UTM37

Код: Выделить всё

p<-read.table("E:/gumus/data.txt",header=FALSE)
names(p)<-c("X","Y")

fn.mif<-"E:/gumus/pf.mif"
fn.mid<-"E:/gumus/pf.mid"

write("Version 300",file=fn.mif)
write("Charset \"Neutral\"",append=TRUE,file=fn.mif)
write("Delimiter \",\"",append=TRUE,file=fn.mif)
write("  CoordSys Earth Projection 8, 104, \"m\", 39, 0, 0.9996, 500000, 0",append=TRUE,file=fn.mif)
write("Columns 1",append=TRUE,file=fn.mif)
write("  ID      Integer",append=TRUE,file=fn.mif)
write("Data",append=TRUE,file=fn.mif)

cur.ID <-1
cur.pos<-1
found  <-FALSE
first  <-TRUE
done   <-FALSE
while(!done) {
  for(i in (cur.pos+1):nrow(p)) {
    if(sum((p[i,]-p[cur.pos,])^2) < 0.01^2) {
      found=TRUE
      break
    }
  }
  if(!found) stop("Failed to found endpoint")

  sbuf="Region 1"; write(sbuf,append=TRUE,file=fn.mif)
  sbuf=sprintf("%5d",i-cur.pos+1); write(sbuf,append=TRUE,file=fn.mif)
  for(ii in cur.pos:i) {
    sbuf=sprintf("%.5f %.5f",p$X[ii],p$Y[ii]); write(sbuf,append=TRUE,file=fn.mif)
  }
  sbuf=sprintf("%d",cur.ID); write(sbuf,append=!first,file=fn.mid)
  first<-FALSE
  cur.ID<-cur.ID+1;
  cur.pos<-i+1;
  if(cur.pos >= nrow(p)) break
}
второй полигон я насильственно замкнул

Код: Выделить всё

401966.67 2303353.66
402007.31 2303356.64
402006.28 2303372.24
402009.37 2303372.54
402008.94 2303378.60
402005.63 2303378.40
402005.38 2303380.16
401979.52 2303379.24
401969.51 2303378.94
401964.64 2303378.38
401965.04 2303371.46
401965.59 2303365.40
401966.67 2303353.66
401955.94 2303377.88
401931.84 2303375.18
401877.18 2303373.65
401881.13 2303350.52
401934.00 2303350.94
401958.29 2303352.61
401955.94 2303377.88
401955.94 2303377.88
результат

Код: Выделить всё

Version 300
Charset "Neutral"
Delimiter ","
  CoordSys Earth Projection 8, 104, "m", 39, 0, 0.9996, 500000, 0
Columns 1
  ID      Integer
Data
Region 1
   13
401966.67000 2303353.66000
402007.31000 2303356.64000
402006.28000 2303372.24000
402009.37000 2303372.54000
402008.94000 2303378.60000
402005.63000 2303378.40000
402005.38000 2303380.16000
401979.52000 2303379.24000
401969.51000 2303378.94000
401964.64000 2303378.38000
401965.04000 2303371.46000
401965.59000 2303365.40000
401966.67000 2303353.66000
Region 1
    7
401955.94000 2303377.88000
401931.84000 2303375.18000
401877.18000 2303373.65000
401881.13000 2303350.52000
401934.00000 2303350.94000
401958.29000 2303352.61000
401955.94000 2303377.88000

Аватара пользователя
Игорь Белов
Гуру
Сообщения: 2241
Зарегистрирован: 04 янв 2011, 22:00
Репутация: 1514
Откуда: Казань

Re: Создание полигонов по координатам txt

Сообщение Игорь Белов » 20 июн 2014, 09:18

Координаты уж больно похожи на какую-нибудь МСК. Тогда X и Y придётся поменять местами.
The purpose of computing is insight, not numbers

gamm
Гуру
Сообщения: 4168
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1107
Ваше звание: программист
Откуда: Казань

Re: Создание полигонов по координатам txt

Сообщение gamm » 20 июн 2014, 09:29

ErnieBoyd писал(а):Координаты уж больно похожи на какую-нибудь МСК. Тогда X и Y придётся поменять местами.
ага, достаточно будет написать

Код: Выделить всё

names(p)<-c("Y","X")

4endyr'
Интересующийся
Сообщения: 29
Зарегистрирован: 07 окт 2011, 08:03
Репутация: 0
Откуда: Саранск

Re: Создание полигонов по координатам txt

Сообщение 4endyr' » 20 июн 2014, 14:54

gamm писал(а): самый простой вариант - написать на R
Спасибо огромное, все получилось :) правда потратил пол дня, т.к. в программирование я очень слаб :mrgreen:

Ответить

Вернуться в «Я новичок!»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя