การสร้างภาพอย่างง่ายจากข้อมูลเวกเตอร์


14

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

ฉันรู้ว่า shp2img จาก MapServer จะทำเคล็ดลับ ฉันแค่อยากรู้ว่ามีอะไรอีกบ้าง

การอ้างอิงถึงเครื่องมือที่คอมไพล์ล่วงหน้าหรือยินดีต้อนรับ api / sdks


บางทีคำถามนี้อาจมีชื่อใหม่ว่า "การสร้างภาพอย่างง่ายจากข้อมูลเวกเตอร์ (เช่นรูปร่าง)" เพื่อให้เป็นคำถามที่ทั่วไปมากขึ้นหรือไม่ คุณยังคงได้รับคำตอบของคุณ แต่มีแรงจูงใจมากขึ้นสำหรับชาวบ้านคนอื่น ๆ ที่จะดู / ตอบเช่นกัน ฉันขอแนะนำให้เปลี่ยน "และโอเพ่นซอร์ส" เป็น "ควรเปิดแหล่งที่มา" ด้วยเหตุผลเดียวกัน
Mark Ireland

คะแนนดีมีการแก้ไข
user890

คำตอบ:


15

คุณสามารถใช้ python (modules: shapley , GDAL / OGR , numpy , matplotlib ) และGDAL / OGRเพื่อวาดภาพจากข้อมูลเวกเตอร์เกือบทุกชนิดในรูปร่างไฟล์ของคุณ บางทีนี่อาจช่วยคุณได้

ตัวอย่าง:

from shapely.geometry import Polygon
from shapely.wkb import loads
from osgeo import ogr
from matplotlib import pyplot

def drawPoligon(poligon,graf):
    xLista,yLista = poligon.exterior.xy
    graf.fill(xLista,yLista,"y")
    graf.plot(xLista,yLista, "k-")

fig = pyplot.figure(figsize=(4, 4),dpi=180)
ax = fig.add_subplot(111)
file1 = ogr.Open("d:\\temp02\\datafile.shp")

layer = file1.GetLayerByName("datafile")
parcel = layer.GetNextFeature()

while parcel is not None:
    geometryParcel = loads(parcel.GetGeometryRef().ExportToWkb())
    drawPoligon(geometryParcel , ax)
    parcel = layer.GetNextFeature()


pyplot.savefig('datafile.png')

สิ่งที่ฉันต้องการ วิธีการนี้มีประโยชน์อย่างยิ่งเนื่องจากไม่ได้เชื่อมโยงกับแหล่งข้อมูล shapefile ขอบคุณ
user890

6

ด่วนราคาถูก (และสกปรก):

  • เปิดและเป็นสัญลักษณ์ไฟล์รูปร่างของคุณด้วยqgis , udig , openjumpหรือ GIS ฟรีอื่น ๆ
  • กดปุ่ม " พิมพ์หน้าจอ "
  • วางในgimpและบันทึกเป็นไฟล์ png

ข้อเสีย: แน่นอนความละเอียดของภาพต้องไม่ดีกว่าของหน้าจอ


3

GeoTools http://geotools.orgมีบิตทั้งหมดที่คุณต้องทำสิ่งนี้ฉันจะประหลาดใจถ้ามีคนไม่ได้มีรหัสที่จะทำเช่นนี้


2

ฉันเดาว่าขึ้นอยู่กับว่าคุณหมายถึงอะไรโดยด่วน คุณหมายถึงบางสิ่งที่ติดตั้งง่ายหรือสิ่งที่ใช้งานง่ายเมื่อคุณติดตั้งแล้ว

คุณพูดถึง MapServer และ shp2img หากคุณมีการติดตั้ง MapServer คุณอาจเขียนสคริปต์ MapScript (Python หรือ php) ที่ค่อนข้างง่ายซึ่งจะวนซ้ำผ่านโฟลเดอร์ของรูปร่างไฟล์และแสดงภาพของมันด้วยสัญลักษณ์เริ่มต้น


1

คำถามนี้ตอบแล้ว แต่ฉันจะใส่ข้อมูลเพิ่มเติมเพราะมันอาจจะเป็นประโยชน์สำหรับใครบางคน รายชื่อผู้รับจดหมายนี้อธิบายถึงวิธีการกำหนด SHP ให้กับรูปภาพและขณะนี้ฉันกำลังดำเนินการเพื่อให้งานเสร็จสมบูรณ์: http://lists.osgeo.org/pipermail/qgis-user/2010-October/010239.html


0

ฉันบันทึกการแก้ไขปัญหานี้สักครู่โดยใช้สองวิธีที่แตกต่างกัน

ผู้ใช้ Python บริสุทธิ์ซึ่งจะทำงานที่ใดก็ได้ที่ Python ทำ: http://geospatialpython.com/2010/12/rasterizing-shapefiles-2-pure-python.html

และอีกอันใช้ Python Imaging Library: http://geospatialpython.com/2010/12/rasterizing-shapefiles.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.