Đang tải dữ liệu OpenStreetMap trong QGIS?


36

Trong QGIS 1.8, tôi đã sử dụng plugin openstreetmap để yêu cầu dữ liệu từ máy chủ hoặc mở tệp XML .osm, tạo ra 3 lớp (đa giác, đa giác và điểm) trong QGIS.

Điều này thật tuyệt vời (cung cấp hoặc nhận lỗi 64 bit ảnh hưởng lớn đến khu vực được ánh xạ mới mà tôi làm việc), nhưng làm cách nào để làm điều đó trong QGIS 2.x?

Tôi không thể tìm thấy bất kỳ tài liệu cập nhật về nó.

Trong menu vectơ, tôi đã thử nhập từ máy chủ osm, tôi nhận được tệp .osm, nhưng sau đó tôi bị kẹt. Có một tùy chọn menu để tải một tệp XML, nhưng nó tạo ra một db spatialite, dường như chỉ có các bảng không có hình học khi tôi cố gắng thêm nó dưới dạng một lớp spatialite. Nếu tôi mở bảng thuộc tính, tôi có thể thấy id nút, cách, v.v., nhưng tôi không thể tìm ra cách sử dụng chúng thực sự.

Tôi cũng đã thử thêm một lớp vectơ từ tệp XML .osm. Tôi nhận được một cửa sổ gpsbabel không hiển thị gì, cuối cùng là một thông báo nguồn dữ liệu không hợp lệ trong QGIS.


2
Tom, tôi đã viết một hướng dẫn từng bước để có được dữ liệu OSM trong QGIS. Hy vọng điều này là đơn giản để làm theo cho người mới bắt đầu. qgistutorials.com/en/docs/doading_osm_data.html
mặc dù không gian

Đây là một phong cách đàng hoàng (với các hướng dẫn thiết lập đẹp): github.com/yannos/Beautitable_OSM_in_QGIS Nó dành cho PostGIS (không phải Spatialite).
kontextify

Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi. - Từ đánh giá
csk

Câu trả lời:


40

Cập nhật cho QGIS 3.x : Trình nhập OSM cũ từ QGIS 2 đã bị hủy trong QGIS 3 do có nhiều lỗi chưa được giải quyết. Plugin QuickOSM cũng cho phép đọc các tệp thô osm. Bạn có thể sử dụng Lớp người dùng - Thêm Lớp - Thêm Lớp Vector thay thế. Trong trường hợp đó, dữ liệu OSM được mở bằng GDAL như được ghi lại bởi http://gdal.org/drv_osm.html


Trong QGIS 2.x , có 3 bước liên quan

  1. Nhận một tệp OSM, bạn có thể lấy nó bằng cách sử dụng josm hoặc cầu vượt hoặc bất kỳ nguồn nào khác. Nó phải là một xml hợp lệ. Bạn cũng có thể tải xuống từ qgis Vector> OpenStreetMap> Tải xuống menu Dữ liệu OSM , nhưng đôi khi nó không cho kết quả. Tôi khuyên bạn nên sử dụng vượt qua turbo .
  2. Vector> OpenStreetMap> Nhập cấu trúc liên kết từ XML , như bạn đã nói sẽ tạo ra một cơ sở dữ liệu không gian với các bảng phi hình học. Điều này tôi nghĩ là cấu trúc liên kết.
  3. Cuối cùng, bạn có thể lấy dữ liệu bằng Vector> OpenStreetMap> Xuất cấu trúc liên kết sang Spatialite , ở đây bạn cần cung cấp tệp db được thực hiện ở trên và giống như trong qgis 1.8, bạn sẽ có tùy chọn để chọn điểm, đường hoặc đa giác . Bên dưới phần đó trong phần thẻ được xuất, bạn có thể tải tất cả các thẻ có trong tệp và chỉ chọn những thẻ bạn yêu cầu. Đây là tính năng bổ sung so với 1.8.

Lớp được thêm vào bản đồ, nếu bạn muốn tất cả các nút, cách bạn có thể lặp lại bước 3 với các tùy chọn khác.

http://wiki.openstreetmap.org/wiki/QGIS#QGIS2_OpenStreetMap_Vector


4
Điều này cảm thấy vô cùng phức tạp, nhưng nó làm việc. Để rõ ràng, sau bước 3, bạn vẫn cần thêm một lớp spatialite, kết nối với db bạn đã tạo và chọn (các) lớp được tạo ở bước 3 để cuối cùng thấy kết quả. Cảm ơn bạn đã giúp đỡ!
Laurent S

Đối với tôi, các lớp được tự động tạo và thêm vào. Kết nối đến cơ sở dữ liệu được thiết lập ở bước 2 (trừ khi bạn bỏ chọn nó).
AndreJ

15

Tôi thấy việc tải xuống dữ liệu OSM bằng cách sử dụng plugin và trải qua các chuyển động nhập và xuất rất tẻ nhạt. Đó là lý do tại sao tôi viết ra một giải pháp khác: http://anitagraser.com/2014/05/31/a-guide-to-googlemaps-like-maps-with-osm-in-qgis/

Tóm lược:

Các tệp OSM thô có thể khá lớn. Đó là lý do tại sao chắc chắn nên tải xuống định dạng .pbf nhị phân nén thay vì định dạng .osm XML. Là một nguồn tải xuống, tôi muốn giới thiệu Geofabrik .

Đối với bước tiền xử lý đầu tiên: trích xuất vùng quan tâm, chúng ta có thể sử dụng Thẩm thấu:

C:\Users\anita_000\Geodata\OSM_Noirmoutier>..\bin\osmosis.bat --read-pbf pays-de-la-loire-latest.osm.pbf --bounding-box left=-2.59 bottom=46.58 right=-1.44 top=47.07 --write-xml noirmoutier.osm

Mặc dù QGIS cũng có thể tải các tệp .osm, tôi thấy rằng hiệu suất và quyền truy cập vào các thuộc tính được cải thiện hơn nhiều nếu tệp .osm được chuyển đổi thành spatialite.

C:\Users\anita_000\Geodata\OSM_Noirmoutier>ogr2ogr -f "SQLite" -dsco SPATIALITE=YES noirmoutier.db noirmoutier.osm

Trong QGIS, chúng ta có thể tải các điểm, đường và đa điểm bằng cách sử dụng Thêm lớp SpatiaLite. Khi chúng ta tải các bảng spatialite, có một số vấn đề:

  • Không có đa giác đất. Thay vào đó, có các tính năng đường dây bờ biển của thành phố.
  • Hầu hết các đa giác sông bị thiếu. Thay vào đó là các tính năng của dòng sông.

Tạo các đa giác sông bị thiếu không phải là một vấn đề lớn:

  1. chọn tất cả các dòng nơi đường thủy = bờ sông.
  2. sử dụng công cụ Đa giác từ hộp công cụ xử lý để tự động tạo đa giác từ các khu vực được bao quanh bởi các đường bờ sông đã chọn. (Lưu ý rằng Xử lý theo mặc định chỉ hoạt động trên các tính năng đã chọn nhưng cài đặt này có thể được thay đổi trong cài đặt Xử lý.)

Tạo đa giác đất (hoặc đa giác biển nếu bạn thích điều đó vì một số lý do) có liên quan nhiều hơn một chút vì phần lớn thời gian bờ biển sẽ không bị đóng cửa vì lý do đơn giản là chúng ta thường cắt một mảnh đất ra khỏi lục địa chính . Do đó, trước khi chúng tôi có thể sử dụng các công cụ Đa giác, chúng tôi phải đóng khu vực. Để làm điều đó, trước tiên tôi khuyên bạn nên chọn đường bờ biển bằng cách sử dụng "other_tags" THÍCH '% "tự nhiên" => "đường bờ biển"%' và tạo một lớp mới từ lựa chọn này (lưu lựa chọn dưới dạng) và chỉnh sửa nó (đừng quên để bật snapping!) để thêm các dòng để đóng khu vực. Sau đó đa giác hóa.


Nếu bạn đang chạy một máy tính khá đáng tin cậy và bạn muốn giai đoạn ogr2ogr hoàn thành trước kỷ băng hà tiếp theo, hãy thêm --config OGR_SQLITE_SYNCHRONOUS OFF.
kiểm tra

6

Nếu bạn không thích plugin, hãy tìm nạp dữ liệu OSM bạn cần với API vượt qua và thêm kết quả vào QGIS bằng Add Vector Layer( All filesbộ lọc dán nhãn ).

QGIS 2.0 sử dụng trình nhập OSM ogr2ogr của GDAL 1.10, công việc này rất tốt.

Hỗ trợ quan hệ dường như là tốt hơn so với các plugin hiện tại.

Chỉ cần đảm bảo rằng bạn tải xuống hoàn toàn các cách và quan hệ , đó là tất cả các nút của các cách và tất cả các thành viên của các quan hệ, với tất cả các nút của chúng.


4

Bạn biết đấy, bạn không cần phải đưa dữ liệu vào SpatialLite. Bạn chỉ có thể:

  1. Tải xuống dữ liệu (Vector> OpenStreetMap> Tải xuống dữ liệu, tạo tệp .osm)
  2. Tải dữ liệu (tệp .osm) dưới dạng lớp vectơ (Lớp> Thêm lớp vectơ). Sau khi bạn chọn tệp, nó sẽ hỏi bạn muốn thêm lớp nào (vì GDAL tạo các tệp riêng cho từng loại: Point, Line, MultiLine, MultiPolygon, GeomCollection). Chọn những gì bạn muốn và tải nó lên.

Điều này hoạt động theo một cách nào đó, nhưng nó dường như không tách các lớp dựa trên các thẻ. Vì vậy, về cơ bản, đường và sông kết thúc trong cùng một lớp Line, điều này không thực sự hữu ích nếu bạn muốn chạy phân tích dữ liệu kết quả.
Laurent S

Không rõ câu hỏi của bạn về những gì bạn đã làm với dữ liệu sau khi được nhập. Tất nhiên bạn có thể chọn bất kỳ tính năng nào bạn muốn từ dữ liệu trong QGIS. Như đã đề cập ở trên, nếu bạn biết bạn chỉ muốn một số dữ liệu nhất định (và nó không có diện tích quá lớn), tải xuống dữ liệu bằng Overpass có thể sẽ tốt hơn, vì bạn có thể chọn trước một số tính năng nhất định. Tôi thấy Overpass Turbo là một cách thân thiện với người dùng để phát triển các truy vấn. Đây là một ví dụ về tất cả các đường cao tốc trong khung giới hạn: overpass-turbo.eu/s/2VX
neuhausr
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.