Страница 1 из 1

снова про датум и не только.. pulkovo 1942 to wsg 84

Добавлено: 06 май 2016, 10:16
madw0lf
Доброго времени суток!
Есть порядка 500 объектов вида:
Акватория, ограниченная прямыми линиями, соединяющими точки со следующими координатами: 44°45'0.25" с.ш. 37°24'11.17" в.д., 44°44'52.53" с.ш. 37°23'50.97" в.д., 44°45'4.11" с.ш. 37°23'36.02" в.д., 44°45'12.21'' с.ш. 37°23'5.66" в.д., 44°45'8.05" с.ш. 37°22'48.14''в.д., 44°45'15.95" с.ш. 37°22'30.06" в.д., 44°44'28.87" с.ш. 37°20'14.39" в.д., 44°46'4.69" с.ш. 37°18'57.78" в.д., до маяка мыса Большой Утриш 44°45'32.00" с.ш. 37°22'39.00" в.д. и далее по береговой линии в начальную точку. Протяженность по береговой линии 2,6 км
от 4 до 18 точек каждый.
Нашел программулю, которая на лету переводит 44°45'0.25" с.ш. 37°24'11.17" в.д. в 44.750000N 37.403056E. Нарисовал так уже 2 слоя вручную. Задолбало.. Впереди еще слоев 20, от 50 до 3 тысяч объектов в каждом. Программуля позволяет сохранять точки в KML, который вполне себе спокойно кушает QGIS и получается куча точек на карте. Теперича вопросы к сообществу:
1. Есть ли более удобные проги, куда можно накопипастить координаты и пакетно перегнать всё, желательно, в CSV или SHP?
2. Есть ли возможность, чтоб эти проги сразу точки преобразовывали в полигоны?
3. Если пункт 2 - больные фантазии сисадмина ставшего ГИС-спецом (это не мое мнение, это мнение моего руководства. я пока что где-то в ясельной группе и до спеца мне как через весь экватор ползком), как из многих тысяч точек выстроить полигоны?
Применяемый софт - QGIS и прочий опенсорц. Платники мне нравятся, но мне их никто не купит ( в том плане, что ArcGIS не предлагать). SQL пока не используется, он в планах на перспективу.

Re: снова про датум и не только.. pulkovo 1942 to wsg 84

Добавлено: 06 май 2016, 10:21
rhot
Скриптить надо. Например, в R.

Re: снова про датум и не только.. pulkovo 1942 to wsg 84

Добавлено: 06 май 2016, 10:49
Denis Rykov
Создаём исходный файл с координатами coords.txt:

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

44°45'0.25" с.ш. 37°24'11.17" в.д.
44°44'52.53" с.ш. 37°23'50.97" в.д.
44°45'4.11" с.ш. 37°23'36.02" в.д.
44°45'12.21" с.ш. 37°23'5.66" в.д.
44°45'8.05" с.ш. 37°22'48.14" в.д.
44°45'15.95" с.ш. 37°22'30.06" в.д.
44°44'28.87" с.ш. 37°20'14.39" в.д.
44°46'4.69" с.ш. 37°18'57.78" в.д.
44°45'32.00" с.ш. 37°22'39.00" в.д.
Преобразуем координаты:

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

$ sed 's/°/d/g; s/ с.ш./N/g; s/ в.д./E/g' coords.txt | awk '{print $2 " " $1}' | cs2cs -f "%.6f" +init=epsg:4284 +to +init=epsg:4326
37.401672	44.749923 4.144940
37.396061	44.747778 4.154043
37.391908	44.750995 4.160133
37.383474	44.753245 4.173077
37.378608	44.752089 4.180878
37.373585	44.754284 4.188471
37.335899	44.741205 4.249472
37.314617	44.767822 4.279285
37.376068	44.758742 4.183968

Re: снова про датум и не только.. pulkovo 1942 to wsg 84

Добавлено: 06 май 2016, 11:17
trir

Re: снова про датум и не только.. pulkovo 1942 to wsg 84

Добавлено: 06 май 2016, 11:24
Denis Rykov
Turning Arbitrary Data into Geodata можно и на голом ogr2ogr выполнить, вот пример из документации:
Building line geometries

Consider the following CSV file (test.csv):
way_id,pt_id,x,y
1,1,2,49
1,2,3,50
2,1,-2,49
2,2,-3,50
With a GDAL build with Spatialite enabled, ogrinfo test.csv -dialect SQLite -sql "SELECT way_id, MakeLine(MakePoint(CAST(x AS float),CAST(y AS float))) FROM test GROUP BY way_id" will return :
OGRFeature(SELECT):0
way_id (String) = 1
LINESTRING (2 49,3 50)

OGRFeature(SELECT):1
way_id (String) = 2
LINESTRING (-2 49,-3 50)
А вот так по идее можно конвертнуть точки в полигон:

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

ogr2ogr -dialect SQLite -sql "SELECT way_id, MakePolygon(MakeLine(MakePoint(CAST(x AS float),CAST(y AS float)))) FROM test GROUP BY way_id" test.shp test.csv

Re: снова про датум и не только.. pulkovo 1942 to wsg 84

Добавлено: 11 май 2016, 12:43
madw0lf
Denis Rykov писал(а):Создаём исходный файл с координатами coords.txt:

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

44°45'0.25" с.ш. 37°24'11.17" в.д.
44°44'52.53" с.ш. 37°23'50.97" в.д.
44°45'4.11" с.ш. 37°23'36.02" в.д.
44°45'12.21" с.ш. 37°23'5.66" в.д.
44°45'8.05" с.ш. 37°22'48.14" в.д.
44°45'15.95" с.ш. 37°22'30.06" в.д.
44°44'28.87" с.ш. 37°20'14.39" в.д.
44°46'4.69" с.ш. 37°18'57.78" в.д.
44°45'32.00" с.ш. 37°22'39.00" в.д.
Преобразуем координаты:

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

$ sed 's/°/d/g; s/ с.ш./N/g; s/ в.д./E/g' coords.txt | awk '{print $2 " " $1}' | cs2cs -f "%.6f" +init=epsg:4284 +to +init=epsg:4326
37.401672	44.749923 4.144940
37.396061	44.747778 4.154043
37.391908	44.750995 4.160133
37.383474	44.753245 4.173077
37.378608	44.752089 4.180878
37.373585	44.754284 4.188471
37.335899	44.741205 4.249472
37.314617	44.767822 4.279285
37.376068	44.758742 4.183968
так и сделал, потом согнал всё в csv и закинул в qgis, а полигоны выстроил через геообработку - выпуклые поверхности на основе поля классификации.
Большое спасибо за помощь! 2 часа на то, что до этого делал за неделю. осталось узлы вручную подправить, а то у меня побережье Черного моря раскидало от Франции до Монголии и от Эфиопии до Волгограда по некоторым полигонам.