รวบรวมข้อมูลรูปร่างส่วนบุคคลของ Conflate (ผสาน) ด้วยข้อมูล OSM


11

พื้นหลัง

ดาวน์โหลดข้อมูล Alberta OSM จากGeofabrikและให้มันทำงานบนเซิร์ฟเวอร์ Linux ส่วนตัวโดยใช้ PostgreSQL 9.1, PostGIS 2.0, Mapnik 2.1.0, osm2pgsql, Apache 2, mod_tile, renderd และ OpenLayers:

ข้อมูลถูกนำเข้าโดยใช้osm2pgsqlดังนี้:

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

ปัญหา

ข้อมูล OSM สำหรับ Alberta ไม่สมบูรณ์ ฉันได้รับชุดรูปร่างไฟล์ที่ปรับปรุงตามข้อมูล OSM:

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

บวกรูปร่างเพิ่มเติมสำหรับหมู่บ้านพื้นที่เขตเมืองเขตเทศบาลและอื่น ๆ ผมได้นำเข้าสำเร็จเชปไฟล์ลงใน PostgreSQL ใช้ pgAdmin ปลั๊กอิน City.prjไฟล์อธิบายฉายดังนี้

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]]

ข้อมูลรูปร่างไฟล์และข้อมูล OpenStreetMap (OSM) แต่ละแห่งมีฐานข้อมูลของตัวเอง แต่ฉันเชื่อว่าฉันต้องการนำเข้าข้อมูลรูปร่างไฟล์ลงในฐานข้อมูล OSM (นี่เป็นเซิร์ฟเวอร์ส่วนตัวและสำเนาในตัวเครื่องของข้อมูล OSM ข้อมูลรูปร่างไม่สามารถแบ่งปันได้อย่างถูกกฎหมาย)

อัปเดต # 1

เพื่อความชัดเจนรูปร่างของไฟล์จะไม่มีถนน: เฉพาะเขตเทศบาล (ซึ่งไม่ใช่ส่วนหนึ่งของข้อมูล OSM) เมือง (บางแห่งเป็นส่วนหนึ่งของข้อมูล OSM) และขอบเขตเมืองสำหรับเมืองใหญ่ (บางแห่งอาจ ขัดแย้งกับข้อมูล OSM)

คำถาม

ฉันจะรวมข้อมูลเชพไฟล์กับข้อมูล OSM เพื่อให้เมืองใหม่ปรากฏบนแผนที่ได้อย่างไร

หมายเหตุ: ความกังวลหลักของฉันคือการแก้ไขข้อมูลที่ซ้ำกัน (เช่น Edmonton มีการระบุไว้ในทั้ง OSM และ Shapefiles ที่จัดหา)

ลิ้งค์ที่มีความเกี่ยวข้อง

ขอบคุณ!


โหลดรูปร่างของคุณลงใน postgis โดยใช้แท็กosm - wiki.openstreetmap.org/wiki/Canadian_tagging_guidelines# การตั้งชื่อจากนั้นรีเฟรชเซิร์ฟเวอร์ไทล์ของคุณควรโหลดคุณสมบัติใหม่ทั้งหมดในรูปแบบข้อมูล osm
Mapperz

คำตอบ:


5

บทนำ

สิ่งนี้อาจจะต้องใช้งานจำนวนมากในการตรวจจับและลบข้อมูลที่ซ้ำซ้อน เมื่อคุณตรวจจับและแก้ไขข้อมูลที่ซ้ำซ้อน คุณจะต้องการให้ทั้งสองแหล่งข้อมูลอยู่ในรูปแบบทางภูมิศาสตร์เดียวกัน: shapefile, PostGIS DB หรือข้อมูล OSM

ขั้นตอนการทำงาน

เวิร์กโฟลว์ต่อไปนี้ขึ้นอยู่กับการมีแหล่งข้อมูลทั้งสองเป็น OSM ก่อนที่จะผสานและแก้ไขข้อมูลที่ซ้ำกัน

มีสองตัวเลือกในการแปลงข้อมูลเป็น OSM:

A]

  1. แปลงข้อมูลเชพไฟล์ลงใน OSM ได้ตามต้องการ รุ่นของ ogr2ogr ที่เปิดตัวในปี 2556 หรือหลังจากนั้น (เวอร์ชั่น 1.10 หรือใหม่กว่า IIRC) ยังสามารถแปลง SHP เป็น OSM นอกจากนี้ยังมีogr2osmตามที่คุณบันทึกไว้: มี ogr2osm สองรุ่นที่แตกต่างกันไม่ว่าคุณจะใช้รุ่นไหน - ฉันชอบpnorman เป็นรุ่นที่ทันสมัยที่สุด ไม่ว่าจะเกิดอะไรขึ้นตรวจสอบให้แน่ใจว่าไฟล์การแปลนั้นเข้ากันได้กับเวอร์ชั่นของ ogr2osm ที่คุณใช้อยู่ (เพื่อความเรียบง่าย ดูที่นี่เป็นตัวอย่างสำหรับไฟล์การแปลที่เข้ากันได้กับ pnorman ogr2osm

ตรวจสอบให้แน่ใจว่าไฟล์การแปลเสร็จสมบูรณ์พร้อมกับข้อมูลทั้งหมดที่คุณต้องการใน Shapefile ของคุณ ไฟล์การแปลจะแปลงประเภทและคุณสมบัติของรูปร่างของคุณไปเป็นสิ่งที่ OSM เรียกว่าแท็กซึ่งประกอบด้วยคีย์และค่า

1a รัน ogr2osm

  1. เปิดjosm , ดาวน์โหลดปลั๊กอินการทำ conflation

  2. ข้อมูล gov ของคุณตอนนี้เป็นไฟล์ osm แล้ว เปิด josm, File> open ข้อมูลของคุณอยู่ในระดับเดียวกัน

  3. หากคุณมีข้อมูล OSM ที่จัดเก็บไว้ในคอมพิวเตอร์ของคุณอยู่แล้วให้เปิดใน josm ข้อมูลนั้นจะเปิดเป็นเลเยอร์ใหม่

  4. การรวมแหล่งข้อมูลทั้งสองเข้าด้วยกันและการแก้ไขข้อมูลที่ซ้ำกันเรียกว่าการรวมข้อมูล เรียกใช้ปลั๊กอินการรวมและแก้ไขข้อขัดแย้งทั้งหมด

หาก JOSM มีหน่วยความจำไม่เพียงพอ (เช่นเมื่อใช้ไฟล์ขนาดใหญ่) ให้แยกประเภทของคุณลักษณะและทำให้เวิร์กโฟลว์นี้เสร็จสมบูรณ์หลายครั้งโดยแต่ละประเภทจะมีข้อมูลที่แตกต่างกัน (เช่นขอบเขตและการใช้ประโยชน์ที่ดินทางหลวง) อาคารและจากนั้นก็ผสาน ไฟล์ osm พร้อมกันโดยใช้ osmium หรือเครื่องมืออื่น

B. JOSM ยังสามารถอ่าน shapefiles ได้แม้ว่าการสนับสนุน SHP นั้นไม่สมบูรณ์และวิธีนี้จะถือว่าสามารถทำการโหลด shapefile ลงในหน่วยความจำทั้งหมดได้ ...

  1. เริ่ม JOSM
  2. เปิด shapefile (เช่นfilename.shp)
  3. เลือกทั้งหมด.
  4. ใน JOSM ให้แก้ไขแอตทริบิวต์และคุณสมบัติที่นำเข้าจาก SHP และเปลี่ยนแปลงเพื่อให้แต่ละแอตทริบิวต์สอดคล้องกับแท็ก OSM
  5. บันทึกเป็นรูปแบบ OSM
  6. ดำเนินการต่อจาก A4 และสร้างความสับสน

นำเข้าเป็น OSM

นำเข้าข้อมูล OpenStreetMap เข้าสู่ระบบดังนี้:

  1. เปลี่ยนเป็นไดเร็กทอรีที่มีไฟล์ OpenStreetMap (OSM) ที่แปลงโดยใช้ JOSM
  2. ดำเนินการคำสั่งต่อไปนี้ในฐานข้อมูล:
    สร้างส่วนขยาย hstore
    osm2pgsql -j -W \
              -d osm filename.osm

-jตัวเลือกที่เป็นกุญแจสำคัญเป็นคำแนะนำมัน osm2pgsql ที่จะนำเข้าแท็กเป็นhstoreคอลัมน์นี้รักษาโครงสร้างข้อมูลพื้นฐานและจะนำเข้าแท็กทั้งหมดลงในฐานข้อมูล

สร้าง Mapnik Layer

หากต้องการให้ข้อมูลปรากฏบนแผนที่ให้เพิ่มเลเยอร์และสไตล์สำหรับเลเยอร์นั้น สิ่งนี้สามารถทำได้ง่ายดังต่อไปนี้:

  1. mapnik-stylesheets/osm.xmlแก้ไข
  2. แทรกรหัส XML ต่อไปนี้ก่อน</Map>แท็กปิด...

...

<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>

สร้างสไตล์ Mapnik

ดำเนินการต่อจากส่วนก่อนหน้า:

  1. ค้นหา</Style>แท็กสุดท้าย(ประมาณบรรทัด 3350)
  2. แทรกรหัส XML ต่อไปนี้ก่อน&layer-shapefiles;คำสั่ง:

...

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

Roadmatcher

roadmatcherเป็นอีกเครื่องมือหนึ่งที่อาจเป็นประโยชน์


OpenJUMP 1.5.1 เข้ากันไม่ได้กับ RoadMatcher 1.4 OpenJUMP 1.3.1 ซึ่งสามารถใช้ RoadMatcher 1.4 เข้ากันไม่ได้กับ PostGIS 2.0 (เพราะ OpenJUMP เรียกfind_extentแทนst_find_extent) ฐานข้อมูลติดตั้ง PostGIS 2.0
เดฟจาร์วิส

ปลั๊กอิน OpenData ของ JOSM อ่าน shapefiles: wiki.openstreetmap.org/wiki/JOSM/Plugins/OpenData
Dave Jarvis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.