Jak dodać projekcję do pliku kształtu za pomocą narzędzi typu open source?


10

Dostałem kilka plików kształtu BEZ projekcji. Więc muszę dodać projekcję, aby wyświetlić ją na mapie Google. Znalazłem potrzebne informacje o projekcji na http://spatialreference.org/ref/epsg/2066 .

Pytanie:
Jak mogę dodać projekcję przy użyciu metody open source (nie mam dostępu do oprogramowania ESRI)?

Dzięki
Chris

Odpowiedzi:


16

Użyj ogr2ogr z GDAL :

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

Co ciekawe, ogr może wykorzystywać również istniejący plik PRJ jako dane wejściowe:

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


2
Podczas próby użycia powyższego narzędzia pojawia się następujący błąd: „Nie można przekształcić współrzędnych, warstwa źródłowa nie ma układu współrzędnych. Użyj -s_srs, aby ustawić jeden”.
ChrisJ

@chris Napisałem niepoprawne użycie, więc spróbuj a_srs, aby „przypisać” projekcję wyjściową
SaultDon

Nie wiedziałem, że możesz dostarczyć .prj do -a_srs. Dzięki!
aendrew

7

Projekcja w pliku .shp znajduje się w pliku shapefilename.prj. Jest to w zasadzie plik tekstowy z odnalezionymi informacjami. Przejrzyj niektóre pliki kształtów i dowiedz się, jak zapisywane są informacje. Lub mniej zadowolony, jeśli masz inny plik .shp w tej samej projekcji, po prostu skopiuj go i zmień nazwę odpowiednio.


Ręcznie utworzyłem plik z informacjami znalezionymi online. Ale nadal nie wyświetla się poprawnie. Czy istnieje narzędzie, którego można użyć do utworzenia pliku projekcji z tymi danymi?
ChrisJ

3
Możesz także użyć spatialreference.org, gdzie możesz znaleźć i pobrać plik .PRJ, a następnie zmienić jego nazwę na ten sam prefiks, co plik .SHP
Mike T


2

Pobierz plik .prj pod opublikowanym linkiem, a następnie zmień jego nazwę, aby pasowała do pliku kształtu.


1
jest to prawdopodobnie również najłatwiejsza metoda, biorąc pod uwagę, że nie ma potrzeby tworzenia żadnych danych pośrednich
SaultDon

0

Znajdź załączony mały skrypt, który zapisuje odwołanie do projekcji ze spatialreference.org do pliku .prj. Dodaje plik projekcji do wszystkich określonych plików w katalogu. Na przykład wszystkie pliki shapefile w katalogu E: \ .Po prostu martw się kodem EPSG projekcji, którą chcesz osadzić, rozszerzeniem plików, do których chcesz dodać plik projekcji, oraz katalogiem, w którym się znajdują. Będzie rekurencyjnie przechodził przez wszystkie podkatalogi, więc używaj go ostrożnie.

    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')

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.