MapnikはSQL Serverから空間データをレンダリングできますか?


10

これは非常に簡単な質問です。Mapnikを使用してSQL Serverに保持されているデータから直接タイルを正常にレンダリングしたことを誰かが確認できるかどうか知りたいだけです。(もしそうなら、それを機能させるために何をしましたか?)これが可能であることを個人的に確認しない限り、返信しないでください...単に可能であることだけではありませ

次のようなスレッドでSQL ServerからのデータをレンダリングするためにMapnikを推奨する人を見たことがあります。SqlGeometry/ SqlGeographyに適したマップレンダリングエンジン

また、MAPNIKのウェブサイトの状態は、「すべてのOGRフォーマットがサポートされている」という。http://mapnik.org/faq/#data

ただし、ローカルSQL Serverデータベースへの接続をMapnikレイヤーのデータソースとして使用することはできません。テストとして、簡単なテストOGR VRTを使用しています。これは、SQLサーバーで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の間にいくつかの問題があるようですが、どこにあるのか正確にはわかりません。他の誰かがこれをうまく達成できたことを示唆する証拠や例はまだ見つかりません...

回答:


2

OGR Virtual Formatのヘルプページに明確な概要がないようです。「ファイル指向ではないデータソースにアクセスするためのアンカーファイルを提供する」というフレーズは、どの接続タイプも使用できることを意味しているようですが、そうではありません。

その元の機能は、たとえばデータベーステーブルのX列とY列を組み合わせてポイントフィーチャを作成することにより、非空間ソースから空間データを作成できるようにすることでした。

ただし、空間データベースもこの目的で使用できない理由はありませんが、MSSQLドライバーではなく標準のODBC接続を使用する必要があります。

これを行うには、WindowsでDSN(データソース名)を作成します。次に、ODBC接続とDSNを仮想層構成で使用します。したがって、DSNが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>

MapServer wiki仮想空間データページに、仮想レイヤーの作成に関する詳細がいくつかあります。

ところで、素晴らしいブログ投稿。Python 3.xの使用についてはあまり心配しません。ほぼすべての便利なGISライブラリは2.xにあります。SQLServerのGeometryおよびGeographyタイプは素晴らしいです。唯一の欠点は、SQL Serverがブログの投稿や他のツールとの統合という点で、残念ながらオープンソースの世界では二流の市民のように見えることです。


返信いただきありがとうございます。VRTでSQL ServerへのODBC接続も試してみましたが、残念ながら同じエラーが発生します。このVRTをQGISまたはOGR2OGRにロードして、SQL機能に問題なくアクセスできるため、SQL ServerへのOGR VRT接続自体には問題がないと思います。これはMapnik OGRドライバーの問題だと思いますが、残念ながら、多くのオープンソースの人々はSQL Serverを使用していません:(残念ながら、MapServer SQL Serverで動作します。代わりに
Alastair Aitchison 2011

@alastair-違いがないと確信していますか?MSSQLではMapnikを介してデータベースに到達するものはありませんでしたが、ODBC SQLプロファイラーではクエリが実行されていることが示されました。後で実際のデータで試します。
geographika

0

あなたは使用することができ、仮想フォーマット(GDAL)あなたの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>

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

Postgres PostGISをお勧めしますが(データベース側のGeometry関数が優れています)


MySQL-> MS SQL。自分で修正したかったのですが、「編集に6文字以上必要」と文句を言いました。
Igor Brejc、2011

1
あなたが実現したかどうかはわかりませんが、あなたが提供したブログのリンクは質問の著者からのものです...
Kelso

@Mapperz-返信に時間を割いていただきありがとうございます。もう一度質問をお読みください-SQL Serverに接続するためにMapnikを使用していることを個人的に確認した方からの連絡を希望します。Kelsoが指摘しているように、あなたがリンクしているブログ記事は私が書いたものであり、実際にそれを読んだ場合、OGR接続を機能させるのにうまくいかなかったことを説明していることがわかります(そのため、私が投稿している理由はこの質問)!。また、PostGISのジオメトリ関数の方が優れていると思いますか?
Alastair Aitchison 2011

@Alastair:OSM-devメーリングリスト(lists.openstreetmap.org/listinfo/dev)で質問してみてください。Mapnikers はたくさんいます。
Igor Brejc、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.