Buforowanie w metrach / km przy użyciu warstw WGS84 przy użyciu QGIS


12

Używam QGIS 1.7.4-Wrocław i pracuję z warstwą SHP w WGS84. Chcę buforować do określonej liczby kilometrów od tej warstwy za pomocą narzędzia bufora Ftools.

Rozumiem, że narzędzie buforujące zawsze używa jednostek warstw, które dla WGS84 są stopniami dziesiętnymi. Wszyscy wiemy, że stopnie nie przeliczają się konsekwentnie na metry, więc jak powinienem zrobić swoje bufory?

Czy muszę konwertować pliki kształtów na inny CRS, który natywnie używa mierników?

Jeśli tak, jak mam wybrać jeden?


Jakie są rozmiary twojego pliku kształtu? Potrzebujemy tych informacji, aby polecić CRS.
nhopton

Tak, najpierw musisz ponownie zaprojektować plik Shapefile (na przykład za pomocą narzędzia „Warstwa ponownego rzutowania” programu fTools). To, która projekcja jest najlepsza, zależy od tego, gdzie znajduje się twój obszar (długość / szerokość geograficzna) i jak duży jest.
Jake

Dzięki, @Jake i @nhopton! Buforuję z kilku punktów na północy Tajwanu, ale bufory będą w zakresie 1000-2000 km (obejmując około połowy Chin, a także Tajwanu).
Evan

1
Ta mapa jest zdefiniowana za pomocą układu współrzędnych geograficznych (szerokość / długość), ale zasięg mapy sugeruje, że jest to faktycznie rzutowany układ współrzędnych (np. Mercator). Jeśli tak, wyniki pomiarów linii lub obszaru będą nieprawidłowe. Aby to naprawić, jawnie ustaw odpowiedni układ współrzędnych mapy za pomocą menu Ustawienia: Właściwości projektu.
Ger

To właściwie przycięty plik Natural Earth, więc jest tylko w WGS84.
Evan

Odpowiedzi:


12

W przypadku tej aplikacji użyłbym projekcji Azimuthal Equidistant wyśrodkowanej pośrodku punktów źródłowych. Rzut ten ma dobrą cechę, że wszystkie odległości promieniowe wokół środka rzutu są dokładne.

Ta konkretna projekcja nie jest częścią standardowych projekcji QGIS. Możesz zdefiniować własne za pomocą opcji Ustawienia / Niestandardowy CRS za pomocą ciągu poleceń +proj=aeqd +lat_0=24.5 +lon_0=121.5, ale niestety niestandardowe prognozy nie mogą być używane przez narzędzie Reprojection fTools. Zamiast tego możesz przekształcić zestaw danych w wierszu polecenia za pomocą polecenia

ogr2ogr points_reprojected.shp points.shp -t_srs "+proj=aeqd +lat_0=24.5 +lon_0=121.5"

Następnie możesz wykonać buforowanie w QGIS za pomocą points_reprojected.shppliku shapefile.

Bufor o długości 2000 km wokół punktu na północnym Tajwanie wygląda jak okrąg w rzucie ortograficznym wyśrodkowanym na punkcie:

... i zgnieciony w WGS84:


Dzięki - zmiana projektu na Azimuthal Equidistant, a następnie buforowanie działało pięknie! W rzeczywistości używałem już tej projekcji, ponieważ po prostu nie zdawałem sobie sprawy, że będzie mieć potrzebne jednostki. Ale nie musiałem używać wiersza polecenia do ponownej projekcji: Warstwa> Zapisz jako ... zrobiło to samo (po zdefiniowaniu niestandardowego CRS).
Evan

@Evan: Miło to słyszeć! Jeśli uważasz, że twoje pytanie jest odpowiedzi, możesz zaznaczyć je jako takie, klikając znacznik wyboru obok odpowiedzi
Jake

1

Hum, ciekawe. Myślę, że przy pierwszej próbie wygenerowałbym (ogromne) bufory jako KML. Możesz to zrobić tutaj:

http://www.thesamestory.com/kmlcircle/

Musisz podać długość / długość dla punktu i odległości buforowej. To, co otrzymujesz, to plik KML zawierający koło. Spójrz na to w Google Earth i jeśli jest w porządku, załaduj go do QGIS.

wprowadź opis zdjęcia tutaj


1
Niestety QGIS Lisboa nie lubi wygenerowanego pliku kml.
AndreJ

QGIS nie lubi nazwy pliku. Spróbuj zmienić go na (powiedzmy) „circle1.kml”. Ale powinienem był to sprawdzić. N.
nhopton

OK, załaduj plik do Google Earth, a następnie zapisz jako KML. Następnie zmień nazwę pliku z domyślnej. ogr2ogr całkiem dobrze konwertuje plik do SHP. N.
nhopton

Rozwiązanie Jake'a zakończyło się dla mnie idealnym rozwiązaniem, ale może to być również dobry sposób, aby to zrobić. Zapamiętam to. Dzięki!
Evan
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.