Як додати проекцію до Shapefile за допомогою інструментів з відкритим кодом?


10

Мені надано кілька форм-файлів БЕЗ проекції. Тому мені потрібно додати проекцію, щоб відобразити її на карті Google. Інформацію про проекцію, яка мені потрібна, я знайшов на веб-сайті http://spatialreference.org/ref/epsg/2066 .

Питання:
Як я можу додати проекцію за допомогою методу з відкритим кодом (не маю доступу до програмного забезпечення ESRI)?

Дякую
Крису

Відповіді:


16

Використовуйте ogr2ogr від GDAL :

ogr2ogr -a_srs EPSG:2066 output.shp input.shp

Що про ogr - це те, що він також може використовувати наявний файл PRJ як вхід:

ogr2ogr -a_srs input.prj output.shp input.shp


2
Я отримую таку помилку при спробі утиліти вище: "Неможливо перетворити координати, у вихідного шару немає системи координат. Використовуйте -s_srs для встановлення такої."
ChrisJ

@chris Я написав неправильне використання, тож спробуйте a_srs "призначити" вихідну проекцію
SaultDon

Не знав, що ви можете надати .prj до -a_srs. Дякую!
aendrew

7

Проекція у .shp-файл знаходиться у formfilename.prj. Це в основному текстовий файл з інформацією, яку ви знайшли. Погляньте на деякі файли форм і з’ясуйте, як записується інформація. Або менш складний, якщо у вас є інший .shp-файл у тій же проекції, просто скопіюйте його та змініть ім'я акордані.


Я вручну створив файл із інформацією, яку знайшов в Інтернеті. Але він все ще не відображається правильно. Чи є утиліта, яку я можу використовувати, щоб створити файл проекції за допомогою цих даних ??
ChrisJ

3
Ви також можете скористатися prostreference.org, де ви можете знайти та завантажити файл .PRJ, а потім перейменувати його на той самий префікс, що і файл .SHP
Mike T


2

Завантажте .prj файл за посиланням, яке ви розмістили, а потім перейменуйте його, щоб він відповідав вашому файлу форми.


1
це, мабуть, найпростіший метод, враховуючи те, що немає необхідності створювати проміжні дані
SaultDon

0

Додається невеликий скрипт , який записує посилання на проекційний з spatialreference.org в файл .prj. Він додає файл проекції до всіх вказаних файлів у каталозі. Наприклад, усі файли форм у каталозі E: \. Просто хвилюйтеся з приводу EPSG-коду проекції, яку ви хочете вставити, розширення файлів, до яких потрібно додати файл проекції, та до каталогу, де вони є. Він буде рекурсивно проходити через усі підкаталоги, тому використовуйте обережно.

    import os

    def getWKT_PRJ (epsg_code):
     import urllib.request, urllib.parse, urllib.error

    # Access projection information
     wkt = urllib.request.urlopen("http://spatialreference.org/ref/epsg/{0}/prettywkt/".format(epsg_code))
     decoded = (wkt.read().decode('utf-8')) 

    # Remove spaces between charachters
     remove_spaces = decoded.replace(" ","")        
    # Place all the text on one line
     output = remove_spaces.replace("\n","")
     return output

    def referencer(folder_path, extension):
        for path, subdirs, files in os.walk(folder_path):
            for name in files:
                file_extension = os.path.splitext(name)[-1]
                if(extension in file_extension):
                    file_path = os.path.join(path,name)
                    file_name = os.path.splitext(file_path)[0]
                    prj = file_name + ".prj"
                    projection = open(prj,"w")
                    projection.write(epsg)
                    projection.close()

    epsg = getWKT_PRJ("25831")              
    referencer('E:\Testfolder', '.shp')

-1

Спробуйте скористатися Geokettle http://www.spatialytics.org/, він читає форму файлів і має можливість додати SRS для його перетворень. В іншому випадку використовуйте ogr2ogr gui (лише для Windows), щоб побачити сітку

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.