这是一个非常简单的问题-我只想知道是否有人可以确认他们已成功使用Mapnik直接从SQL Server中保存的数据渲染图块。(如果可以,您是怎么做的?)除非您已亲自确认这是可能的,否则请不要回复...不仅仅是应该这样做
我见过人们推荐Mapnik在这样的线程中从SQL Server渲染数据:任何用于SqlGeometry / SqlGeography的好的Map渲染引擎
另外,mapnik网站指出“支持所有OGR格式”:http ://mapnik.org/faq/#data
但是,我完全无法使用到本地SQL Server数据库的连接作为Mapnik图层的数据源。作为测试,我使用了一个简单的测试OGR VRT,它在SQL Server上执行一条SQL语句,以选择单个内联地理多边形作为“知名文本”,如下所示:
<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之间似乎存在一些问题,但我不知道确切的位置。我尚未找到任何证据或例子来表明其他任何人都能够成功实现这一目标...