Kết hợp (hợp nhất) dữ liệu shapefile riêng với dữ liệu OSM


11

Lý lịch

Đã tải xuống dữ liệu OSM của Alberta từ Geofabrik và chạy trên máy chủ Linux riêng bằng PostgreQuery 9.1, PostGIS 2.0, Mapnik 2.1.0, osm2pgsql, Apache 2, mod_tile, renderd và OpenLayers:

Dữ liệu được nhập bằng cách sử dụng osm2pgsqlnhư sau:

osm2pgsql -W -K -S /usr/local/share/osm2pgsql/default.style -d osm alberta.osm.bz2

Vấn đề

Dữ liệu OSM cho Alberta không đầy đủ. Tôi đã được cung cấp một bộ các shapefile cải thiện dữ liệu OSM:

City.dbf, City.prj, City.sbn, City.sbx, City.shp, City.shp.xml, City.shx

Cộng với các shapefile bổ sung cho các làng, khu vực đô thị, ranh giới quận, thành phố, vv. Tôi đã nhập thành công các shapefiles vào PostgreSQL bằng cách sử dụng plugin pgAdmin . Các City.prjtập tin mô tả chiếu của nó như sau:

GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]

Mỗi dữ liệu shapefile và dữ liệu OpenStreetMap (OSM) đều có cơ sở dữ liệu riêng, nhưng tôi tin rằng tôi muốn nhập dữ liệu shapefile vào cơ sở dữ liệu OSM. (Đây là một máy chủ riêng và một bản sao cục bộ của dữ liệu OSM; dữ liệu shapefile không thể được chia sẻ một cách hợp pháp.)

Cập nhật số 1

Để rõ ràng, các shapefile không chứa đường: chỉ có ranh giới đô thị (chắc chắn không phải là một phần của dữ liệu OSM), các thành phố (một số trong đó là một phần của dữ liệu OSM) và ranh giới thành phố cho các thành phố lớn hơn (một số có thể xung đột với dữ liệu OSM).

Câu hỏi

Làm cách nào để hợp nhất dữ liệu shapefile với dữ liệu OSM để các thành phố mới xuất hiện trên bản đồ?

Lưu ý: Mối quan tâm chính của tôi là giải quyết các dữ liệu trùng lặp (ví dụ: Edmonton được liệt kê trong cả OSM và các shapefile được mua).

Liên kết liên quan

Cảm ơn bạn!


Tải shapefiles của bạn vào postgis bằng cách sử dụng thẻ osm - wiki.openstreetmap.org/wiki/Canadian_tagging_guferences#Naming sau đó làm mới máy chủ gạch của bạn sẽ tải tất cả các tính năng mới trong dữ liệu theo kiểu osm.
Mapperz

Câu trả lời:


5

Giới thiệu

Điều này có thể sẽ yêu cầu số lượng đáng kể công việc thủ công để phát hiện và xóa dữ liệu trùng lặp. Khi bạn phát hiện và giải quyết dữ liệu trùng lặp; bạn sẽ muốn cả hai nguồn có cùng định dạng địa lý: shapefile, PostGIS DB hoặc dưới dạng dữ liệu OSM.

Quy trình làm việc

Quy trình làm việc sau đây dựa trên việc có cả hai nguồn dữ liệu là OSM trước khi hợp nhất và giải quyết dữ liệu trùng lặp.

Có một vài tùy chọn để chuyển đổi dữ liệu thành OSM:

Một]

  1. Chuyển đổi dữ liệu shapefile thành OSM theo cách bạn muốn. Các phiên bản của ogr2ogr được phát hành vào năm 2013 trở lên (phiên bản 1.10 trở lên, IIRC) cũng có thể chuyển đổi SHP sang OSM. Cũng ogr2osmnhư bạn đã lưu ý: có một vài phiên bản khác nhau của ogr2osm, bất kể bạn sử dụng phiên bản nào - tôi thích pnorman hơn , đó là phiên bản cập nhật nhất. Dù thế nào đi chăng nữa, hãy đảm bảo các tệp dịch tương thích với phiên bản ogr2osm mà bạn đang sử dụng (vì đơn giản, những tệp mà tôi đã liên kết phải tương thích với phiên bản ogr2osm). Xem ở đây làm ví dụ cho các tệp dịch tương thích với ogr2osm của pnorman.

Đảm bảo tệp dịch hoàn chỉnh với tất cả thông tin mà bạn muốn trong shapefile của bạn. Tệp dịch sẽ chuyển đổi Loại và thuộc tính của shapefile thành cái mà OSM gọi là Thẻ , bao gồm Khóa và Giá trị.

1a. chạy ogr2osm.

  1. Mở josm , tải xuống plugin liên kết

  2. Dữ liệu gov của bạn bây giờ là một tệp osm. Mở josm, File> open Dữ liệu của bạn ở đó dưới dạng một lớp.

  3. Nếu bạn đã có dữ liệu OSM được lưu trữ cục bộ trên máy tính của mình, hãy mở nó trong josm, nó cũng sẽ mở dưới dạng một lớp mới.

  4. Hợp nhất hai nguồn dữ liệu này với nhau và giải quyết dữ liệu trùng lặp được gọi là liên kết . Chạy plugin liên kết và giải quyết tất cả các xung đột.

Nếu JOSM hết bộ nhớ (ví dụ: khi sử dụng các tệp lớn), hãy tách các loại thuộc tính và hoàn thành quy trình công việc này nhiều lần, mỗi loại có một loại dữ liệu khác nhau (ví dụ: ranh giới và sử dụng đất; đường cao tốc; tòa nhà), và cuối cùng là hợp nhất các tập tin osm với nhau bằng cách sử dụng osmium hoặc công cụ khác.

B. JOSM cũng có thể đọc các shapefile mặc dù hỗ trợ SHP không hoàn hảo và phương pháp này giả định rằng shapefile có thể được tải hoàn toàn vào bộ nhớ ...

  1. Bắt đầu JOSM.
  2. Mở shapefile (ví dụ, filename.shp).
  3. Chọn tất cả.
  4. Trong JOSM, Chỉnh sửa các thuộc tính và thuộc tính được nhập từ SHP và thay đổi chúng để mỗi thuộc tính tương ứng với thẻ OSM.
  5. Lưu dưới định dạng OSM.
  6. Tiếp tục từ A4 và confatter

Nhập dưới dạng OSM

Nhập dữ liệu OpenStreetMap vào hệ thống như sau:

  1. Thay đổi thư mục chứa các tệp OpenStreetMap (OSM) được chuyển đổi bằng JOSM.
  2. Thực hiện các lệnh sau trong cơ sở dữ liệu:
    TẠO cửa hàng EXTENSION;
    osm2pgsql -j -W \
              -d osm filename.osm

Các -jtùy chọn là chìa khóa vì nó hướng dẫn osm2pgsql để nhập khẩu các thẻ vào một hstorecột, bảo tồn cấu trúc dữ liệu cơ bản này và sẽ nhập khẩu tất cả các thẻ vào cơ sở dữ liệu.

Tạo lớp Mapnik

Để dữ liệu xuất hiện trên bản đồ, hãy thêm một lớp và kiểu cho lớp đó. Điều này có thể đơn giản như sau:

  1. Chỉnh sửa mapnik-stylesheets/osm.xml.
  2. Chèn mã XML sau vào trước </Map>thẻ đóng ...

...

<Layer name="prefix_zone" status="on" srs="&osm2pgsql_projection;">
  <StyleName>zones</StyleName>
  <Datasource>
    <Parameter name="table">
    (select way from prefix_line order by tags desc, z_order) as zones
    </Parameter>
    &datasource-settings;
  </Datasource>
</Layer>

Tạo Phong cách Mapnik

Tiếp tục từ phần trước:

  1. Tìm </Style>thẻ cuối cùng (khoảng dòng 3350).
  2. Chèn mã XML sau vào trước lệnh &layer-shapefiles;:

...

<Style name="zones">
  <Rule>
    &maxscale_zoom1;
    &minscale_zoom19;
    <LineSymbolizer stroke="#0065BD" stroke-width="2.5" />
  </Rule>
</Style>

Người đi đường

roadmatcher là một công cụ khác có thể hữu ích


OpenJUMP 1.5.1 không tương thích với RoadMatcher 1.4. OpenJUMP 1.3.1, có thể sử dụng RoadMatcher 1.4, không tương thích với PostGIS 2.0 (vì gọi find_extentlà OpenJUMP chứ không phải st_find_extent). Cơ sở dữ liệu đã cài đặt PostGIS 2.0.
Dave Jarvis

Plugin OpenData của JOSM đọc các shapefiles: wiki.openstreetmap.org/wiki/JOSM/Plugins/OpenData
Dave Jarvis
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.