10 votos

Puede Mapnik de procesamiento de datos espaciales de SQL Server?

Esta es una pregunta muy simple - sólo quiero saber si alguien puede confirmar que se han utilizado con éxito Mapnik para representar las baldosas directamente a partir de datos en SQL Server. (Y, si es así, ¿qué hacer para que funcione?) Por favor, no responda a menos que usted personalmente he confirmado que esto es posible... no, simplemente, que debe ser posible

He visto a la gente recomendar Mapnik para la representación de datos de SQL Server en hilos como este: Cualquier Buen Mapa Motores de Renderizado para SqlGeometry/SqlGeography

También, el mapnik sitio web afirma que "todos los OGR es compatible con los formatos": http://mapnik.org/faq/#data

Sin embargo, he sido completamente incapaz de utilizar una conexión a mi local de SQL Server base de datos como origen de datos para un Mapnik capa. Como una prueba, estoy usando una sencilla prueba OGR VRT, que ejecuta una instrucción SQL en un Servidor SQL server para seleccionar una sola inline geografía Polígono como el Conocido Texto, de la siguiente manera:

<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>

(Nota: también he intentado esto con más convencional SELECT * FROM Tabla de sintaxis). OGRINFO éxito, se abre este VRT y los informes de los siguientes:

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)

Sin embargo, la configuración de este mismo VRT archivo como un origen de datos para un Mapnik capa de informes de error siguientes:

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;'.

Parece que hay algún problema entre la forma en que la OGR controlador crea la conexión de SQL Server y Mapnik, pero no sé exactamente donde está. Todavía no he encontrado ninguna evidencia o ejemplos para sugerir que nadie ha sido capaz de lograr esto, ya sea...

2voto

Swinders Puntos 1042

Parece ser que hay una falta de una visión clara sobre la OGR Formato Virtual de la página de ayuda. La frase puede "proporcionar un ancla de archivo para el acceso a los archivos orientado a orígenes de datos" parece implicar cualquier tipo de conexión se puede utilizar, pero no estoy seguro de que este es el caso.

Su función original era permitir que los datos espaciales a ser creado a partir de la no-espacial de las fuentes, por ejemplo mediante la combinación de una X y la y de columna en una tabla de base de datos para crear las características de punto.

Sin embargo no hay ninguna razón por qué una base de datos espaciales no puede también ser utilizado para este propósito, pero a continuación, usted debe utilizar un estándar ODBC de conexión en lugar de la MSSQL conductor.

Para ello crear un DSN (Data Source Name) en Windows. A continuación, utilice la conexión ODBC, y la DSN en el virtual configuración de la capa. Así que si el DSN se denomina OSVectorMap:

<OGRVRTDataSource>
  <OGRVRTLayer name="AASQLlayer">
    <SrcDataSource>ODBC:username/password@OSVectorMap</SrcDataSource>
    <SrcSQL>SELECT geom27700.STAsText() AS geomWKT FROM TG11_Settlement_Area</SrcSQL>
    <GeometryField encoding="WKT" field="geomWKT"/>
    <LayerSRS>EPSG:4326</LayerSRS>
    <GeometryType>wkbPolygon</GeometryType>
  </OGRVRTLayer>
</OGRVRTDataSource>

Hay algunos detalles más sobre la creación de Virtual Capas en el MapServer wiki y Virtual de Datos Espaciales de la página.

Gran blog por cierto. Yo no se preocupe demasiado acerca del uso de Python 3.x - casi todos los GIS útil bibliotecas están todavía en la 2.x De SQL Server y de la Geometría y la Geografía tipos son grandes. Los únicos inconvenientes son que SQL Server parece, lamentablemente, un ciudadano de segunda clase en el mundo opensource en términos de las entradas del blog, y la integración con otras herramientas.

0voto

Erik Öjebo Puntos 6937

Usted puede utilizar el Formato Virtual (GDAL) para extraer datos de su Base de datos MSSQL

http://www.gdal.org/ogr/drv_vrt.html

    <OGRVRTDataSource>
  <OGRVRTLayer name="AASQLlayer">
    <SrcDataSource>MSSQL:server=.\SQLEXPRESS;database=OSVectorMap;trusted_connection=yes</SrcDataSource>
    <SrcSQL>SELECT geom27700.STAsText() AS geomWKT FROM TG11_Settlement_Area</SrcSQL>
    <GeometryField encoding="WKT" field="geomWKT"/>
  </OGRVRTLayer>
</OGRVRTDataSource>

fuente: http://alastaira.wordpress.com/2011/06/16/tile-rendering-with-mapnik-part-1-of-n-where-n-is-large/

Aunque recomendamos Postgres PostGIS (tiene mejor Geometría de las funciones de la base de datos secundarios)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X