Описан процесс создания векторного точечного слоя из текстовых данных.
Обсудить в форуме Комментариев 3
Одна из распространенных задач в ГИС - преобразование наборов координат из различного рода таблиц в векторные слои точечного типа. Разберем эту задачу на примере создания векторного слоя поворотных точек границ субъектов РФ на основе данных Росреестра.
Для каждой границы двух соседних регионов существует *.doc файл, содержащий описание так называемых поворотных точек, принадлежащих данной границе. Фрагмент одного из таких файлов представлен на следующем рисунке:
Нас будут интересовать первые 3 столбца таблицы, содержащейся в файле описания: номер точки, координата X, координата Y.
Выделяем эти три столбца и копируем их в любой табличный процессор, например, OO Calc. Удаляем пустые строки и строки, в которых не содержится информации о координатах:
В нашем конкретном примере координаты даны в километрах, поэтому значения координат (x и y) умножаем на 1000. В результате должны получиться значения следующего порядка:
1 | 5911000 | 13693900 |
2 | 5918400 | 13695900 |
3 | 5922000 | 13697500 |
4 | 5928600 | 13694200 |
5 | 5927500 | 13405200 |
6 | 5931400 | 14305600 |
7 | 5933000 | 13696700 |
... |
... |
... |
Далее, используя растровые изображения, необходимо определить номер зоны, к которой принадлежит каждая поворотная точка. Последовательно просматривая каждый растр, находим на нём номер точки из составленной таблицы и определяем номер листа:
От номера листа отнимаем 30 и получаем номер зоны (другой простой способ определить номер зоны - определить количество миллионов по Y, оно равно номеру зоны). Результат представим в виде следующей таблицы:
№ | X | Y | Зона |
1 | 5911000 | 13693900 | 13 |
2 | 5918400 | 13695900 | 13 |
3 | 5922000 | 13697500 | 13 |
4 | 5928600 | 13694200 | 13 |
5 | 5927500 | 13405200 | 11 |
6 | 5931400 | 14305600 | 14 |
7 | 5933000 | 13696700 | 13 |
... |
... |
... |
После того, как принадлежность к той или иной зоне была установлена для каждой точки, переходим к следующему шагу. Точки, принадлежащие одной зоне выделяем в отдельный csv-файл (в итоге количество csv-файлов должно равняться количеству зон, в которые попадают поворотные точки рассматриваемой границы). csv-файлы должны иметь следующую структуру:
N,X,Y 1,5911000,13693900 2,5918400,13695900 …
Следующие шаги выполняем для каждого csv-файла.
Далее необходимо склеить все полученные shape-file в один. Выполним это с помощью утилиты ogr2ogr. Допустим мы получили 3 shape-файла: zone13.shp, zone14.shp, zone15.shp, тогда для склейки этих файлов в один необходимо выполнить команды в следующем порядке:
ogr2ogr result.shp zone13.shp ogr2ogr -update -append result.shp zone14.shp -nln merged ogr2ogr -update -append result.shp zone15.shp -nln merged
Проверим полученный результат. Для этого в любой ГИС откроем любой растр с фрагментом границы и получившийся векторный слой поворотных точек:
Если точки с одинаковыми номерами совпадают на растре и на векторе, значит все прошло успешно. Если же какие-то точки «улетели», то, возможно, вы ошиблись при выборе зоны. Однако, ошибки могут присутствовать и в исходных данных!
Обсудить в форуме Комментариев 3
Последнее обновление: September 09 2021
Дата создания: 25.01.2010
Автор(ы): Денис Рыков
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).