Mam ponad 100 plików kształtów, które nie mają pliku .prj, a więc kiedy wprowadzam je do ArcMap 10, pokazują układ współrzędnych jako nieznany. Wiem, że wszystkie układy współrzędnych plików kształtów to GCS WGS 1984. Wiem też, że mogę użyć narzędzia Define Projection GP, aby indywidualnie przypisać układ współrzędnych do każdego pliku, ale zajmie to wieczność.
Miałem nadzieję, że istnieje narzędzie GP do zdefiniowania partii, ale nie widzę żadnego. Następnie pomyślałem, że może mógłbym to zrobić za pomocą Pythona, więc zajrzałem do menu pomocy i znalazłem skrypt, ale wyświetla mi się błąd.
Oto kod w Pythonie, który wypróbowałem (dotyczy pojedynczego pliku shp, więc nadal będę miał problem z wpisaniem nazwy dla każdego pliku:
import arcpy
infc = r"C:\Documents and Settings\User\My Documents\ArcGIS\shpfiles\Site_2.shp"
prjfile = r"<install directory>\Coordinate Systems\Geographic Coordinate Systems\World\WGS 1984.prj"
arcpy.DefineProjection_management(infc, prjfile)
arcpy
arcgis-10.0
coordinate-system
wilbev
źródło
źródło
Odpowiedzi:
Myślę, że przesadzacie z tym ...
źródło
Jeśli znajdują się w tym samym katalogu, coś takiego działałoby (wystarczy zamienić ścieżki, może dodać obsługę wyjątków):
źródło
import os, shutil
(patrz zaktualizowana odpowiedź). docs.python.org/tutorial/stdlib.html powinien tam być.Po prostu wykonaj kopię pliku .prj i zmień nazwę. Na przykład, jeśli masz 3 pliki kształtów:
Zdefiniuj rzut dla one.shp, a będziesz mieć plik one.prj w katalogu. Skopiuj one.prj do katalogu two.shp i zmień nazwę na two.prj, powtórz dla wszystkich plików kształtów. .Prj to tylko plik tekstowy. O ile plik .prj znajduje się w tym samym katalogu co plik .shp i ma taką samą nazwę, oprogramowanie go pobierze. Zautomatyzuj za pomocą wszystkich znanych Ci narzędzi do kopiowania i zmiany nazw plików.
źródło
Edytować:
Prawdopodobnie najłatwiejsza byłaby metoda. Wprowadź je wszystkie i przypisz poprawne crs do dokumentu. Byliby „nie rzucani”, ale siedzieli we właściwym miejscu. Następnie wystarczy wyeksportować (wiele) do nowej lokalizacji.
Widzę narzędzie GP do projekcji wsadowej.
Nie może być narażony na łuk. ??
Myślę, że stworzyłbym pgdb, (plik, osobisty lub nawet sde), a następnie stworzyłem fds (zestaw danych funkcji).
Przypisz odpowiednie crs do tego fds.
Zaimportuj pliki kształtów (wiele). [wszystkie fc w fds dziedziczą crs z fds].
Następnie możesz wyeksportować do pliku kształtu (wiele).
Byłoby to zamiast projekcji wsadowej i jestem pewien, że można by ją napisać.
źródło
co powiesz na prosty skrypt powłoki i ogr2ogr? Zobacz http://www.gdal.org/ogr2ogr.html dla dokładnej składni.
źródło
Oto, czego używam ... zdefiniuje tylko projekcję dla plików rastrowych, które nie mają projekcji. Mam nadzieję, że to pomoże. Tworzy również listę plików bez projekcji dla celów zapewnienia jakości.
Dla twoich wektorów potrzebuje tylko niewielkiej modyfikacji - FileList = arcpy.ListFeatureClasses ()
źródło