- Ищете бесплатный шейп-файл европейских стран?
- GIS-LAB
- VMap0 — получение данных
- Содержание
- [править] Глобальные данные
- [править] Данные на территорию России
- [править] Другое
- [править] Ссылки по теме
- Шейп файл страны мира
- Получение пространственных данных из shape-файлов
- 11.01.2017 Разбираемся с кодировкой (обновление)
- Дополнительные нововведения в программе
Ищете бесплатный шейп-файл европейских стран?
Кажется, я не могу найти бесплатный шейп-файл европейских стран. Это карта, которую я собираюсь заполнить собственными данными с помощью ESRI ArcGIS:
На веб-сайте Евростата, похоже, имеется шейп-файл региона с границами страны, который также включает подразделения NUTS. Шейп-файлы Natural Earth доступны только для всего мира, а не для таких регионов, как Европа.
Вы можете загрузить «официальные» административные / статистические единицы ЕС из службы Евростата GISCO . Вектор слои доступны как ESRI шейп и персональных GDBS, в разных разрешениях от здесь .
Обратите внимание, что для извлечения полигонов на уровне страны, как показано ниже, вам потребуется извлечь все объекты на основе следующего запроса STAT_LEVL_ = 1 из шейп-файла NUTS_RS_01M_2013.shp .
Natural Earth является отличным источником бесплатных данных, в том числе границ страны и государства, в различных масштабах. Вам просто нужно выбрать европейские страны, используя таблицу атрибутов.
Вы можете скачать страны мира из ArcGIS Online, а затем открыть таблицу атрибутов, выбрать атрибутом ( CONTINENT = ‘Europe’ ) и затем щелкнуть правой кнопкой мыши, чтобы экспортировать Европу в качестве нового слоя. Предположительно, вы можете сделать то же самое с другими наборами глобальных данных, которые вы нашли.
получить шейп-файл ESRI NUTS 2013
и, если не существует, создать местоположение на основе EPSG 3035
В противном случае пропустите следующую команду и введите местоположение в зависимости от требуемой системы пространственной привязки.
Затем перейдите к
и импортировать векторную карту
извлечь все STAT_LEVL_ = 0 на новую карту
и, наконец, распасться, чтобы получить границы страны
Эта карта содержит NUTS_ID
Таким образом, следующий CSV может быть полезен для тех, кому необходимо присоединить коды стран ISO3166-1-alpha3
Этот ( http://www.diva-gis.org/gdata ) сайт отлично подходит для получения административных данных со всего мира, включая Европу. Вы также можете получать данные на разных административных уровнях (например, Страна, Штат, Округ).
Файлы форм для европейских стран доступны в Евростате . Вот ссылка на пример того, как создать карту с ним.
Возможно, немного поздно, но есть этот ресурс, который бесплатен и поддерживает arcGIS — показывает все страны мира — http://www.orrbodies.com/resource/world-250k-coastlinepolitical-map/
Ваш шейп-файл не так просто воспроизвести.
Служба Евростата GISCO имеет странную концепцию Европы, она исключает Украину, но включает Турцию.
Лучший вариант, который я нашел, — это вырезать шейп-файлы страны естественной земли к границам Европы и исключить Россию, если вы этого не хотите. Обратите внимание, что Крым больше не в Украине, в стране шейп-файлы. При желании вы также можете удалить острова Шпицберген и Азорские острова, обрезав их до прямоугольного размера.
выберите границу Европы с помощью gdal:
Используйте europeboundary.shp, чтобы вырезать этот регион из естественных стран Земли:
Если вы хотите исключить Россию, удалите эту страну:
В R с rgdal и raster (для raster :: crop) процедура аналогична, например:
Пост старый, но все еще актуальный и полезный вопрос, надеюсь, он поможет.
Источник
GIS-LAB
Географические информационные системы и дистанционное зондирование
VMap0 — получение данных
Ссылки для скачивания данных VMap0, описание и кодификатор смотрите в других статьях (ссылки ниже).
Данные VMap0 – относительно новая версия векторных данных, являющаяся следующей версией широко распространенных данных DCW (подробнее о данных VMap0).
Данные VMap0 в исходном формате VPF, на территорию всего земного шара, можно получить непосредственно на сайте National Geospatial-Intelligence Agency. Данные являются общественным достоянием (public domain) за исключением слоёв границ и Reference Library копирайтом на которые владеет ESRI (ограничения на использование этих данных неизвестны, поэтому они все равно публикуются, как и в исходных данных).
PRJ файлы можно скачать отдельно.
Содержание
[править] Глобальные данные
Данные по регионам мира в формате ESRI Shapefile (см. схему границ зон, границы зон в формате shape):
Данные в формате SQL пригодные для загрузки в PostGIS/PostgreSQL
Данные конвертируются следующим образом:
Параметры доступа к серверу данных:
- Сервер: gis-lab.info
- База: vmap0
- Порт: 5432
- Имя/пароль: gislab/gislab
[править] Данные на территорию России
Данные VMap0 на территорию России, преобразованные в формат Arcview shapefile можно получить на этой странице.
Данные полностью импортированы из формата VPF, обрезаны границей РФ, взятой из того же покрытия, склеены в единые слои из библиотек континентов Европы, Северной Америки и Азии, каждый слой имеет легенду в формате avl.
Скачать по слоям/темам (в каждом архиве может быть несколько слоев):
Границы субъектов (2Mb)
Границы субъектов РФ с убранными лишними разделителями и расширенной атрибутикой (2Mb) (cp1251, utf, sql)
Только границы государств (8Mb)
Только границы государств, по зонам (8Mb)
[править] Другое
[править] Ссылки по теме
Последнее обновление: 2014-05-14 23:35
Дата создания: 23.04.2006
Автор(ы): Максим Дубинин
Источник
Шейп файл страны мира
СУБД MS SQL Server начиная с версии 2008 поддерживает работу с пространственными данными (spatial data), которые реализованы как пользовательские типы данных (UDT-types). MS SQL Server поддерживает 2 вида пространственных данных:
- geometry — представляет данные в евклидовой (плоской) системе координат.
- geography — представляет данные в геодезической (географической) системе координат.
Поддержка вышеуказанной СУБД пространственных данных открывает много полезных возможностей при разработке сайтов и других ГИС-приложений, взаимодействующих с картографической информацией: можно хранить данные в одном месте (централизовано), пользуясь преимуществами единой резервной копии и не беспокоясь за рассогласованность данных; получить все преимущества транзакций при извлечении и обновлении данных; создавать пространственные индексы для ускорения поиска, использовать удобство языка запросов SQL при манипуляции с данными и т.д.
Как вам, вероятно, известно MS SQL Server 2008 (или более поздние версии с уровнем совместимости 100 и ниже) накладывает некоторые ограничения на использование типа geography (взято из MSDN):
- Любой экземпляр geography должен лежать в пределах одного полушария. И, как следствие, не допускается сохранение пространственных объектов больше размера полушария.
- Любой экземпляр geography в представлении консорциума OGC Well-Known Text (WKT) или Well-Known Binary (WKB), порождающий объект больше полушария, приводит к возникновению исключения ArgumentException.
- Методы типа данных geography, требующие указания двух экземпляров geography, такие как STIntersection(), STUnion(), STDifference() и STSymDifference(), возвратят NULL, если результаты методов не умещаются в одном полушарии. Метод STBuffer() также возвращает значение NULL, если выходные данные выходят за пределы одного полушария.
К счастью, в более поздних вресиях эти ограничения сняты и в моем случае использовался SQL Server 2012 Express Edition.
Получение пространственных данных из shape-файлов
Shape-файлы содержат геометрические и атрибутивные данные без сохранения информации о топологии. Этот формат хранения векторных данных (точек, линий, полигонов) был создан компанией ESRI для обмена информацией между своими программными продуктами, но приобрел широкую популярность и фактически является обменным форматом между различными геоинформационными системами (ГИС). Shape-файл состоит из:
- Основного файла (.shp), каждая запись которого описывает фигуру со списком вершин.
- Индексного файла (.shx) — каждая запись содержит смещение соответствующей записи основного файла от начала этого файла.
- Файла dBASE (.dbf), который содержит атрибутивную информацию. Записи в файле должны располагаться в таком же порядке, как и в основном файле.
Вполне разумным решением было предположить, что уже существуют готовые программы, которые позволяют загрузить информацию из shape-файлов в MS SQL. Самое первое решение, на которое я наткнулся, была утилита spape2sql .
В качестве тестовых данных для «закачки» в БД я использовал shape-файл TM_WORLD_BORDERS_SIMPL-0.3.zip с полигонами территориальных границ стран. Однако, в процессе импорта в таблицу MS SQL Server 2012 я получил предупреждение о том, что данные выходят за допустимые границы типа geography, а также ряд ошибок с сообщением о том, что значение не является допустимым экземпляром географического объекта. Возможно, ошибки связаны с ограничениями типа geography для MS SQL Server 2008, т.к. программа «заточена» под него. К сожалению, исходников я не обнаружил, равно как и других легковесных утилит для импорта геоданных. Скорей всего, есть решения от таких гигантов, как ESRI и иже с ними, входящие состав серьезных программных продуктов, но эта не та «весовая категория», и я их намеренно исключил из круга поиска.
Чтобы глубоко не копать спецификацию shape-файла, решил поискать уже готовые библиотеки на C#. Достаточно быстро нашел подходящую библиотеку с открытым исходным кодом — Catfood.Shapefile. В загруженном архиве есть демо-пример использования библиотеки, который и взял за основу.
Я решил не заморачиваться с графическими интерфейсами и набросать простое консольное приложение, которое обозвал похожим образом — shape2mssql. Строка для запуска программы выглядит следующим образом:
- filename.shp — обязательный параметр: имя shape-файла (при этом файл должен быть в той же директории, что и программа) или путь к shape-файлу.
- srid — необязательный параметр: идентификатор пространственной ссылки. Если не указан, то принимается по умолчанию значение 4326 , что соответствует системе координат WGS84.
- keyColumnName — необязательный параметр: имя поля для первичного ключа. Если не указан, то принимается значение по умолчанию Id
Дополнительно в конфигурационном файле приложения shape2mssql.exe.config нужно указать строку подключения к БД, например, так:
Преобразование координат пространственных данных из shape-файла в объект типа SqlGeography (чтобы можно было работать с типом SqlGeography , нужно установить пакет Microsoft.SqlServer.Types (Spatial)) осуществляется c помощью класса SqlGeographyBuilder , который просто формирует нужные строки для создания геометрии, вызывая соответствующие методы STxxxFromText. Данный класс и реализация его публичных методов показана ниже:
Сам код достаточно прост, как хозяйственной мыло ) Класс SqlGeographyBuilder в аргументах своих публичных методов принимает класс shape2mssql.Entities.Point . Этот тип данных позволяет жестко не привязывать класс SqlGeographyBuilder к библиотеке Catfood.Shapefile, а именно к структуре Catfood.Shapefile.PointD. Поэтому, если подключить иную библиотеку доступа к shape-файлам, то этот класс изменять не придется, необходимо будет только написать свой метод для преобразования точек в тип shape2mssql.Entities.Point . Однако, вернемся к классу SqlGeographyBuilder . Единственный момент, на который стоит обратить внимание — это приватный метод getProperPolygon . Его код представлен ниже:
Необходимостью его создания послужила следующая формальность: как MS SQL Server трактует полигоны. Представим, что есть область пространства, ограниченная замкнутой линией. Какую область необходимо учитывать: та, которая содержится внутри замкнутой линии или же все окружающее пространство за исключением области, ограниченной полигоном? Для решения этой дилеммы воспользуемся эвристическим подходом, который заключается в том, что область с меньшей площадью скорей всего будет правильным выбором. Таким образом, для всех полигонов производим инвертирование, проверяем условие, что площадь инвертированного полигона меньше площади начального полигона. Если условие выполняется, то далее используем уже этот инвертированный полигон.
Класс SqlDataAccess содержит код доступа к MS SQL Server и выполняет вставку геоданных и сопутствующей атрибутивной информации в таблицу. Имя таблицы получается из имени shape-файла (без расширения .shp). При создании параметра для команды вставки необходимо определить тип параметра как Udt. Фрагмент кода показан ниже:
Ссылку на загрузку исходного кода вы можете найти в конце данной статьи. Ну и напоследок приведу несколько примеров пространственных данных, импортированных в базу данных из shape-файлов с различным типом геометрии. Первый файл TM_WORLD_BORDERS_SIMPL-0.3.shp содержит полигоны границ стран мира. Поскольку данные имеют систему координат WGS84, то последние два параметра можно не указывать. Для импорта выполним команду:
Получим всю выборку таким незамысловатым запросом:
И, перейдя на вкладку «Spatial results», увидим результаты в графическом представлении:
Загрузим немного линий, выполнив программу со следующими параметрами.
В данном случае система координат отличается от WGS84, поэтому добавим параметр srid, который равен 4269 — североамериканская система координат (NAD) 1983г. И результат:
Загрузим данные о наиболее посещаемых местах мира в виде точечных объектов.
Количество объектов в файле оказалось равным 7343, а окно отображения пространственных результатов осилило отрисовку только 5000, о чем мы и были проинформированы. Но, тем не менее, картина достаточно показательна:
Последний пример демонстрирует указание собственного названия ключевого поля, поскольку ключевое поле по умолчанию Id конфликтует с названием поля атрибутивной информации.
Получаем вот такую картину территориального делелния Замбии:
11.01.2017 Разбираемся с кодировкой (обновление)
В процессе импорта некоторых shape-файлов, атрибутивная информация которых содержит строки на русском языке, я обнаружил проблемы с кодировкой. Продемонстрирую данную проблему. Я нашел на просторах интернета и загрузил в свой MS SQL Server 2012 Express shape-файлы Белгородской области. Импорт прошел успешно, но в таблицах базы данных оказались строки такого вида:
С помощью популярной программы Notepad++ установил, что dbf-файлы оказались в кодировке UTF-8, в то время же как провайдер Microsoft.Jet.OLEDB.4.0 считывал их в кодировке cp866. Чтобы исправить ситуацию мне достаточно для строковых данных выполнять следующее преобразование:
В данном случае SourceEncoding — это cp866, а DestEncoding — это UTF-8. Чтобы учесть кодировку dbf-файла, в командную строку я добавил еще один опциональный параметр [encoding] . Теперь строка запуска программы с аргументами выглядит таким образом:
После импорта геоданных с указанием правильной кодировки с помощью команды:
мы получаем вот такую картину для атрибутов геоданных:
Дополнительные нововведения в программе
Помимо добавления еще одного аргумента, задающий кодировку файла, я вынес в файл конфигурации приложения значения параметров по умолчанию, т.е., если параметры командной строки [srid] Шейп файл страны мира [encoding] не указаны, то будут использоваться значения из файла конфигурации. Секция настроек выглядит таким образом:
- Srid — идентификатор пространственной ссылки по умолчанию.
- KeyFieldName — имя поля для первичного ключа по умолчанию.
- SourceEncoding — кодировка, в которой считываются атрибутивные строковые данные драйвером dbf-файла.
- DestEncoding — кодировка по умолчанию, в которую преобразуются строковая атрибутивная информация (если не указана, а также, если не указан соответствующий параметр командной строки, то перекодировка не происходит).
Еще одной новой фичей shape2mssql является пакетная загрузка shape-файлов в БД. Если теперь запустить программу без аргументов, то она ищет все shape-файлы в текущей директории и последовательно выполняет их обработку. Таким образом я загрузил в базу данных все геоданные из shape-файлов. С помощью запроса, приведенного ниже я сформировал демонстрационную выборку пространственных данных.
Источник