Створення простого зображення з векторних даних


14

Хто-небудь може запропонувати швидкий (бажано з відкритим кодом) спосіб створити зображення з файлу форми. Наприклад, у мене є файл форми, що містить межі посилок, я хочу створити png-файл із зображенням цих посилок. Символікою, необхідною для цього зображення, будуть голі кістки (суцільний контур і заливка).

Я знаю, що shp2img від MapServer зробив би свою справу. Мені просто цікаво, чи є ще щось.

Будь-які посилання на попередньо складені засоби або api / sdks вітаються.


Можливо, це питання може бути перетворене "Створення простого зображення з векторних даних (наприклад, Shape)", щоб це було більш загальним питанням? Ви все одно отримуєте свою відповідь, але більше стимулів для інших людей також бачити / відповідати. Я б також запропонував змінити "та з відкритим кодом" на "бажано з відкритим кодом" з тієї ж причини.
Марк Ірландії

Хороші бали, застосовані зміни.
user890

Відповіді:


15

Ви можете використовувати python (модулі: shapley , GDAL / OGR , numpy , matplotlib ) та GDAL / OGR для малювання зображення практично з будь-якого союзу векторних даних, у вашому випадку shapefile. Можливо, це вам допоможе.

Приклад:

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

Саме те, що мені було потрібно. Цей підхід особливо корисний, оскільки він не пов'язаний з джерелами даних форм. Спасибі.
user890

6

Швидке, дешеве (і брудне):

  • відкрийте і символізуйте файл форми за допомогою qgis , udig , openjump або будь-якого іншого безкоштовного ГІС,
  • натисніть кнопку " друкувати екран ",
  • вставити в gimp і зберегти як png-файл.

Недолік: звичайно, роздільна здатність зображення не може бути кращою, ніж резолюція екрана.


3

GeoTools http://geotools.org містить усі біти, які потрібно зробити для цього, я буду здивований, якщо хтось ще не має коду десь це зробити.


2

Я думаю, що це залежить від того, що ви маєте на увазі під швидким. Ви маєте на увазі щось просте в установці або те, що просто використовувати після встановлення.

Ви згадуєте MapServer та shp2img. Якщо у вас встановлений MapServer, ви, ймовірно, можете написати досить простий скрипт MapScript (Python або php), який би перебирав папку форм-файлів і відображав їх зображення із символікою за замовчуванням.


1

На це питання вже відповіли, але я вкладу додаткову інформацію, оскільки це може бути корисним для когось. Цей список розсилки пояснює, як передати SHP зображенням, і зараз я працюю з ним, щоб виконати завдання: http://lists.osgeo.org/pipermail/qgis-user/2010-O жовтня/ 010239.html


0

Я трохи задокументував це рішення, використовуючи два різні методи.

Один, що використовує чистий Python, який працюватиме де завгодно, ніж Python: http://geospatialpython.com/2010/12/rasterizing-shapefiles-2-pure-python.html

І один, що використовує бібліотеку зображень Python: http://geospatialpython.com/2010/12/rasterizing-shapefiles.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.