To bardzo proste pytanie - chcę tylko wiedzieć, czy ktoś może potwierdzić, że z powodzeniem użył Mapnika do renderowania kafelków bezpośrednio z danych przechowywanych w SQL Server. (A jeśli tak, to co zrobiłeś, aby działało?) Nie odpowiadaj, chyba że osobiście potwierdzisz, że jest to możliwe ... nie tylko, że powinno być możliwe
Widziałem ludzi polecających Mapnik do renderowania danych z SQL Server w wątkach takich jak ten: Dowolne dobre mechanizmy renderowania map dla SqlGeometry / SqlGeography
Ponadto strona internetowa mapnik stwierdza, że „wszystkie formaty OGR są obsługiwane”: http://mapnik.org/faq/#data
Jednak całkowicie nie byłem w stanie użyć połączenia z moją lokalną bazą danych SQL Server jako źródła danych dla warstwy Mapnik. Jako test używam prostego testu OGR VRT, który wykonuje instrukcję SQL na serwerze SQL Server, aby wybrać pojedynczą liniową wielokąt geograficzny jako dobrze znany tekst w następujący sposób:
<OGRVRTDataSource>
<OGRVRTLayer name="test">
<SrcDataSource>MSSQL:server=zangief\DENALICTP3;database=TempDB;</SrcDataSource>
<SrcSQL>SELECT geography::STPolyFromText('POLYGON((0 50, 2 50, 2 53, 0 53, 0 50))', 4326).STAsText() AS geomWKT</SrcSQL>
<GeometryField encoding="WKT" field="geomWKT"/>
<LayerSRS>EPSG:4326</LayerSRS>
<GeometryType>wkbPolygon</GeometryType>
</OGRVRTLayer>
</OGRVRTDataSource>
(Uwaga: próbowałem również tego z bardziej konwencjonalną składnią SELECT * FROM Table). OGRINFO z powodzeniem otwiera ten VRT i zgłasza, co następuje:
ogrinfo mssql.ovf -so -al
INFO: Open of `mssql.ovf'
using driver `VRT' successful.
Layer name: test
Geometry: Polygon
Feature Count: 1
Extent: (0.000000, 50.000000) - (2.000000, 53.000000)
Layer SRS WKT:
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.0174532925199433,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]]
geomWKT: String (0.0)
Jednak ustawienie tego samego pliku VRT jako źródła danych dla warstwy Mapnik zgłasza następujący błąd:
ERROR 1: Failed to open datasource `MSSQL:server=zangief\DENALICTP3;database=Tem
pDB;'.
Traceback (most recent call last):
File "rundemo.py", line 48, in <module>
provlines_lyr.datasource = mapnik.Ogr(file="mssql.ovf", layer="test")
File "C:\OSGeo4W\apps\Python25\lib\site-packages\mapnik\__init__.py", line 418
, in Ogr
return CreateDatasource(keywords)
RuntimeError: Failed to open datasource `MSSQL:server=zangief\DENALICTP3;databas
e=TempDB;'.
Wygląda na to, że istnieje pewien problem między sposobem, w jaki sterownik OGR tworzy połączenie SQL Server a Mapnikiem, ale nie wiem dokładnie, gdzie to jest. Nie znalazłem jeszcze żadnych dowodów ani przykładów sugerujących, że ktokolwiek inny byłby w stanie to osiągnąć ...
źródło
Możesz użyć formatu wirtualnego (GDAL), aby pobrać dane z bazy danych MSSQL
http://www.gdal.org/ogr/drv_vrt.html
źródło: http://alastaira.wordpress.com/2011/06/16/tile-rendering-with-mapnik-part-1-of-n-where-n-is-large/
Chociaż polecam Postgres PostGIS (ma lepsze funkcje geometrii po stronie bazy danych)
źródło