Jak przekonwertować plik programu Excel z kolumnami x, y na plik kształtu punktowego?
Oprócz poprawnego utworzenia pliku shapefile istnieją pewne opcjonalne wymagania:
- Typy kolumn (zgodnie ze specyfikacjami formatu Excela) powinny zostać zachowane (szczególnie typy dat)
- Nazwy kolumn należy pobrać z nagłówka
- Chciałbym jak to zrobić z wiersza polecenia
- Gdybym mógł dołączyć heterogeniczne odniesienia przestrzenne do punktów w trzeciej kolumnie, byłbym bardzo szczęśliwy :)
Odpowiedzi:
Polecam używanie OGR / GDAL , który jest częścią biblioteki GDAL . OGR obsługuje format wirtualny, który umożliwia specyfikację za pomocą pliku XML. Po przekonwertowaniu arkusza programu Excel na plik CSV można wygenerować VRT w celu uzyskania dostępu do danych.
Zakładając, że masz coś takiego
example.csv
:Możesz utworzyć VRT
example.vrt
w następujący sposób:Począwszy od GDAL 1.7, możesz dodatkowo określić typy danych pól atrybutów, używając
<Field>
elementu wewnątrz<OGRVRTLayer>
, na przykład:Należy pamiętać, że pliki kształtów przechowują atrybuty w formacie DBASE IV , który ma mniejszą elastyczność typów danych niż Excel. Po określeniu pliku VRT możesz użyć zwykłego łańcucha narzędzi OGR do konwersji danych do pliku Shapefile:
Niestety, # 4 nie jest możliwe - specyfikacja pliku shapefile pozwala na pojedyncze rzutowanie (widoczne tutaj
example.prj
po ostatnim kroku).źródło
<Field>
znacznik. Myślę, że sam toMożesz użyć wtyczki z tekstem rozdzielanym dostarczonej z QGIS (http://qgis.org ), aby załadować plik tekstowy, a następnie zapisać go jako plik kształtu.
źródło
Chociaż nie z wiersza poleceń, możesz to zrobić w aplikacji ArcGIS. Od wersji 9.3.1 wystarczy dodać XLS bezpośrednio do ArcMap. Utwórz warstwę zdarzeń XY z XLS (tj. Wybierz kolumny X, Y i ustaw swoje odniesienie przestrzenne), a następnie wyeksportuj tę warstwę zdarzeń XY do nowej .shp. Można to łatwo zautomatyzować za pomocą prostego skryptu python / VBA lub modelu w programie budującym modele . Chętnie pomożemy w tym podstawowym przepływie pracy, jeśli potrzebujesz więcej informacji.
źródło
Szukałem, ale nie mogłem znaleźć strony pomocy dotyczącej Wyświetlania danych XY w pomocy internetowej, ale proces jest prosty.
Aby to zrobić, potrzebujesz jedynie poziomu licencji ArcView (Basic) ArcGIS (for) Desktop.
źródło
Zawsze jest pełna przygód opcja. Możesz sam napisać plik kształtu. ESRI publikuje specyfikację plików kształtów, które możesz przeczytać tutaj:
http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
Prawdopodobnie będziesz również musiał napisać plik DBF. Możesz przeczytać o formacie tutaj:
http://www.clicketyclick.dk/databases/xbase/format/dbf.html#DBF_STRUCT
Jest to niewątpliwie przesada, ale dałoby ci to przewagę nad całym procesem.
źródło
Osobiście wolę używać FME z Safe Software (http://www.safe.com), która nie tylko pozwala mi rysować punkty na podstawie wartości XY, ale daje mi elastyczność w przekształcaniu współrzędnych z jednej projekcji na drugą przed drukowaniem, określ typ separatora, linia początkowa (w przypadku, gdy plik tekstowy zawiera informacje nagłówka), dołącz atrybuty, jeśli plik tekstowy ma X, Y, informacje o atrybucie dla danych punktów. Jeśli chcesz wizualizować te dane w Google Earth, możesz zapisać je do formatu KML, jednocześnie określając styl punktu KML. ~ SRG
źródło
Jeśli chcesz wykonać inne przetwarzanie danych x, y, możesz załadować dane do postgresu, użyć geomfromtext z konkatenacją, aby utworzyć typ danych geometrii, a następnie użyć pgsql2shp, aby wyeksportować do kształtu. Takie podejście pozwoli również zachować heterogeniczne dane przestrzennego systemu odniesienia w innej kolumnie, które można następnie wykorzystać do przekształcenia wszystkich punktów we wspólny system odniesienia w db przed eksportowaniem do kształtu. Zdaję sobie sprawę, że wymaga to więcej kroków niż ogr / gdal, ale da ci dużo większą elastyczność.
źródło
Co powiesz na ładowanie plików CSV do spatiallite, a następnie użycie OGR lub QGIS do wyeksportowania do pliku kształtu.
http://www.gaia-gis.it/spatialite-2.2/index.html
Możesz nawet eksportować bezpośrednio ze spatialite do pliku kształtu.
http://www.gaia-gis.it/spatialite-2.2/spatialite-2.2_tutorial.html#t3.1
źródło
Aby uzyskać bardziej podstawową transformację, możesz użyć transformatora 2Dpointreplacer w FME 2013. Musisz wskazać, w których kolumnach znajdują się wartości X i Y, a następnie FME przekształci te wartości na przykład w plik kształtu z punktami.
Nazwy i typy kolumn można ustawić zgodnie z wymaganiami
źródło