นี่เป็นคำถามง่าย ๆ - ฉันแค่อยากรู้ว่าใครสามารถยืนยันได้ว่าพวกเขาใช้ Mapnik ในการเรนเดอร์ไทล์โดยตรงจากข้อมูลที่เก็บไว้ใน SQL Server (และถ้าเป็นเช่นนั้นคุณทำอะไรเพื่อให้มันใช้งานได้) โปรดอย่าตอบกลับจนกว่าคุณจะได้รับการยืนยันเป็นการส่วนตัวว่าเป็นไปได้ ... ไม่ใช่แค่ว่ามันควรจะเป็นไปได้
ฉันเคยเห็นผู้คนแนะนำ Mapnik สำหรับการแสดงข้อมูลจาก SQL Server ในเธรดเช่นนี้: เอ็นจินการเรนเดอร์แผนที่ที่ดีสำหรับ SqlGeometry / SqlGeography
นอกจากนี้เว็บไซต์ mapnik ระบุว่า "รองรับรูปแบบ OGR ทั้งหมด": http://mapnik.org/faq/#data
อย่างไรก็ตามฉันไม่สามารถใช้การเชื่อมต่อกับฐานข้อมูล SQL Server ในพื้นที่ของฉันเป็นแหล่งข้อมูลสำหรับเลเยอร์ Mapnik ได้ เป็นการทดสอบฉันใช้ OGR VRT ทดสอบตรงไปตรงมาซึ่งดำเนินการคำสั่ง SQL บน SQL Server เพื่อเลือกรูปหลายเหลี่ยมแบบอินไลน์ภูมิศาสตร์เดียวกับข้อความที่รู้จักกันดีดังต่อไปนี้:
<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 แต่ฉันไม่รู้ว่ามันอยู่ตรงไหน ฉันยังไม่พบหลักฐานหรือตัวอย่างใด ๆ ที่จะชี้ให้เห็นว่าใครก็ตามที่สามารถประสบความสำเร็จในการบรรลุเป้าหมายนี้ ...