2010-07-12 2 views
4

Австралийская избирательная комиссия имеет свободные ESRI и MapInfo формирующие ГИС-слои австралийских границ выборов для download. Я хочу преобразовать эти данные в изображение многоугольника эскиза, используя бесплатный инструмент.Как преобразовать данные ESRI или MapInfo GIS в изображения с помощью бесплатных инструментов?

ответ

4

Предполагаю, что вам нужен отдельный образ для каждого электората? Если да, то я бы следующий подход с использованием питона:

Прочитайте геометрию с помощью GDAL/OGR:

Установите GDAL/OGR tools и их python bindings. Загрузите шейп-файл ESRI для границ выборов. Убедитесь, что вы можете прочитать геометрию полигона, используя OGR:

import sys 
import ogr 

ds = ogr.Open("/path/to/boundary/file.shp") 
if ds is None: 
    print "Open failed.\n" 
    sys.exit(1) 

lyr = ds.GetLayer(0) 

lyr.ResetReading() 

feat = lyr.GetNextFeature() 
while feat is not None: 
    geom = feat.GetGeometryRef() 
    if geom is None or geom.GetGeometryType() != ogr.wkbPolygon: 
     print "no poly geometry\n" 

    feat = lyr.GetNextFeature() 

ds.Destroy() 

Выход геометрии с использованием Matplotlib через стройные, Декарт

Установка matplotlib, shapely и descartes. Измените указанный выше сценарий для загрузки каждого полигона в matplob через стройные и Декарта:

import sys 
import ogr 
from shapely.wkb import loads 
from descartes import PolygonPatch 
from matplotlib import pyplot 


ds = ogr.Open("/path/to/boundary/file.shp") 
if ds is None: 
    print "Open failed.\n" 
    sys.exit(1) 

lyr = ds.GetLayer(0) 

lyr.ResetReading() 

feat = lyr.GetNextFeature() 
while feat is not None: 
    geom = feat.GetGeometryRef() 
    if geom is None or geom.GetGeometryType() != ogr.wkbPolygon: 
     print "no poly geometry\n" 
    else: 
     # create matplotlib figure: 
     fig = pyplot.figure(1, figsize = [10,10], dpi = 300) #create 10x10 figure 
     ax = fig.addsubplot(111) #Add the map frame (single plot) 

     # add polygon: 
     patch = PolygonPatch(loads(feature.GetGeometryRef().ExportToWkb()), plus colour and line considerations) 
     ax.addpatch(patch) # simply add the patch to the subplot 

     # set plot vars 
     ax.set_xlim(get xmin and xmax values from data) 
     ax.set_ylim(get ymin and ymax values from data) 
     ax.set_aspect(1) 

     # save as image 
     pyplot.savefig('somefile.png', some arguments you like)¶ 

    feat = lyr.GetNextFeature() 

ds.Destroy() 

Очевидно, что вам нужно, чтобы исправить это немного, чтобы заставить это сделать, как вы хотите, но общий подход должен быть звук.

2

Загрузить и использовать QGIS - www.qgis.org Этот удобный инструмент с открытым исходным кодом работает хорошо и открывает множество типичных форматов изначально (то есть файлы формы, первоначально разработанные ESRI). Он также имеет встроенный инструмент OGR.

Плюс это просто забавно играть и просты в использовании.

 Смежные вопросы

  • Нет связанных вопросов^_^