Это очень простой вопрос - я просто хочу знать, может ли кто-нибудь подтвердить, что они успешно использовали Mapnik для визуализации плиток непосредственно из данных, хранящихся в SQL Server. (И, если да, что вы сделали, чтобы заставить его работать?) Пожалуйста, не отвечайте, если вы лично не подтвердили, что это возможно ... не просто, что это должно быть возможно
Я видел, как люди рекомендуют Mapnik для рендеринга данных из SQL Server в такие потоки, как этот: Любые хорошие механизмы рендеринга карт для SqlGeometry / SqlGeography
Также на сайте mapnik говорится, что «поддерживаются все форматы OGR»: http://mapnik.org/faq/#data
Однако я совершенно не смог использовать соединение с моей локальной базой данных SQL Server в качестве источника данных для слоя Mapnik. В качестве теста я использую простой тест OGR VRT, который выполняет инструкцию SQL на SQL Server, чтобы выбрать отдельный полигон Inline Geography в качестве общеизвестного текста следующим образом:
<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>
(Обратите внимание, я также пробовал это с более обычным синтаксисом SELECT * FROM Table). OGRINFO успешно открывает VRT и сообщает следующее:
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)
Однако при установке этого же файла VRT в качестве источника данных для слоя Mapnik выдается следующая ошибка:
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;'.
Кажется, что существует какая-то проблема между тем, как драйвер OGR создает соединение SQL Server и Mapnik, но я точно не знаю, где это. Я еще не нашел каких-либо доказательств или примеров, позволяющих предположить, что кто-либо еще мог успешно достичь этого ...
источник
Вы можете использовать виртуальный формат (GDAL) для извлечения данных из базы данных MSSQL
http://www.gdal.org/ogr/drv_vrt.html
источник: http://alastaira.wordpress.com/2011/06/16/tile-rendering-with-mapnik-part-1-of-n-where-n-is-large/
Хотя рекомендуем Postgres PostGIS (имеет лучшие функции геометрии на стороне базы данных)
источник