虚拟空间数据

作者

杰夫麦克纳

联系

jmckenna在gatewaygeomatics.com

最后更新

2021-05-05

OGR‘s VRT driver 允许用户连接到MapServer中不显式保存空间数据的数据库以及平面文本文件。您的数据必须具有X和Y列,并且可以通过ODBC连接或指向文本文件的直接指针来访问数据。

原版 VirtualSpatialData wiki页面可能包含其他信息。

数据库类型

虚拟空间数据OGR扩展已经用以下数据库进行了测试,理论上应该支持所有的ODBC数据源。

  • 甲骨文公司

  • MySQL

  • SQL Server

  • 通路

  • 《PostgreSQL》

平面文件类型

逗号、制表符或自定义分隔的文本/平面文件用于虚拟空间数据。

显示步骤

1。创建数据源名称(DSN)

  • 有关在Windows和Linux上创建DSN的特定说明,可以通过搜索MapServer参考文档站点找到。

  • 在某些Windows系统上,必须创建系统DSN。

2。测试连接

测试您与ogrinfo的连接。此命令的语法为:

> ogrinfo ODBC:user/pass@DSN table

Windows用户可能不需要指定用户/密码,因此语法为:

> ogrinfo ODBC:@DSN table

示例:使用ogrinfo通过ODBC访问逗号分隔的文本文件

以下是包含lat/long points的扁平文本文件coal_dep.txt的片段:

unknown,na,id,id2,mark,coalkey,coalkey2,long,lat
0.000,0.000,1,1,7,87,87,76.90238,51.07161
0.000,0.000,2,2,7,110,110,78.53851,50.69403
0.000,0.000,3,3,3,112,112,83.22586,71.24420
0.000,0.000,4,4,6,114,114,80.79896,73.41175

如果DSN名称为data_txt,则查看目录中适用文件列表的ogrinfo命令为:

> ogrinfo ODBC:jeff/test@Data_txt

INFO: Open of `ODBC:jeff/test@Data_txt'
using driver `ODBC' successful.
1: coal_dep.csv
2: coal_dep.txt
3: coal_dep_nf.txt
4: coal_dep_trim.txt
5: Copy of coal_dep.txt
6: deposit.csv
7: maruia.asc
8: oahuGISbathy.csv
9: oahuGISbathy.txt
10: on_pts.txt
11: on_pts_utm.txt
12: test.txt
13: utm_test.txt

用户名和密码可能是可选的,因此以下内容也可能有效:

> ogrinfo ODBC:@Data_txt

因此,查看有关某个特定层的更多信息的命令是:

> ogrinfo ODBC:@Data_txt coal_dep.txt

INFO: Open of `ODBC:@Data_txt'
using driver `ODBC' successful.

Layer name: coal_dep.txt
Geometry: Unknown (any)
Feature Count: 266
Layer SRS WKT:
(unknown)
UNKNOWN: String (255.0)
NA: String (255.0)
ID: String (255.0)
ID2: String (255.0)
MARK: String (255.0)
COALKEY: String (255.0)
COALKEY2: String (255.0)
LONG: String (255.0)
LAT: String (255.0)
OGRFeature(coal_dep.txt):0
UNKNOWN (String) = 0.000
....

三。创建虚拟数据文件

这是一个扩展名为ovf的文件,如下所示:

<OGRVRTDataSource>
        <OGRVRTLayer name="mylayer">
        <SrcDataSource>ODBC:user/pass@DSN</SrcDataSource>
        <SrcLayer>tablename</SrcLayer>
        <GeometryType>wkbPoint</GeometryType>
        <LayerSRS>WGS84</LayerSRS>
        <GeometryField encoding="PointFromColumns" x="x" y="y"/>
        </OGRVRTLayer>
</OGRVRTDataSource>

有关ovf文件的更多信息,请访问:https://gdal.org/drivers/vector/vrt.html

示例:coal_dep.txt的ovf文件:

<OGRVRTDataSource>
        <OGRVRTLayer  name="coal-test">
        <SrcDataSource>ODBC:Data_txt</SrcDataSource>
        <SrcLayer>coal_dep.txt</SrcLayer>
        <GeometryField encoding="PointFromColumns" x="Long" y="Lat"/>
        <GeometryType>wkbPoint</GeometryType>
        </OGRVRTLayer>
</OGRVRTDataSource>

4。用ogrinfo测试虚拟数据文件

使用ogrinfo测试新的ovf文件,例如:

> ogrinfo coal.ovf coal-test

ERROR 4: Update access not supported for VRT datasources.
Had to open data source read-only.
INFO: Open of `myfile.ovf'
using driver `VRT' successful.

Layer name: coal_dep.txt
Geometry: Unknown (any)
Feature Count: 266
Layer SRS WKT:
(unknown)
UNKNOWN: String (255.0)
NA: String (255.0)
ID: String (255.0)
ID2: String (255.0)
MARK: String (255.0)
...

5。 Mapfile 层

使用一个OVF文件,您的层可能看起来像:

LAYER
  CONNECTION "coal.ovf"
  CONNECTIONTYPE OGR
  DATA "coal-test"
    METADATA
      "wms_srs"   "4326"
      "wms_title"   "coal-test"
    END
  NAME "coal-test"
  SIZEUNITS PIXELS
  STATUS ON
  TOLERANCE 0
  TOLERANCEUNITS PIXELS
  TYPE POINT
  UNITS METERS
  CLASS
    STYLE
      COLOR 255 0 0
      MAXSIZE 100
      MINSIZE 1
      SIZE 6
      SYMBOL "star"
    END
  END
END

备注

对于连接,可以指定绝对路径或相对路径。首先相对于shapepath解释相对路径,如果找不到,则mapserver将相对于.map位置重试。有关连接规则的详细信息,请阅读MAPServer OGR 文件。

或者您可以直接指定ovf内容,例如:

LAYER
  CONNECTION "<OGRVRTDataSource>
    <OGRVRTLayer  name='coal-test'>
    <SrcDataSource>ODBC:@Data_txt</SrcDataSource>
    <SrcLayer>coal_dep.txt</SrcLayer>
    <GeometryField encoding='PointFromColumns' x='Long' y='Lat'/>
    <GeometryType>wkbPoint</GeometryType>
    </OGRVRTLayer>
    </OGRVRTDataSource>"
  CONNECTIONTYPE OGR
  DATA "coal-test"
  METADATA
    "wms_srs"   "4326"
    "wms_title"   "coal-test"
  END
  NAME "coal-test"
  SIZEUNITS PIXELS
  STATUS ON
  TOLERANCE 0
  TOLERANCEUNITS PIXELS
  TYPE POINT
  UNITS METERS
  CLASS
    STYLE
      COLOR 255 0 0
      MAXSIZE 100
      MINSIZE 1
      SIZE 6
      SYMBOL "star"
    END
  END
END

6。测试映射文件

你首先应该尝试使用 Sp2IMG 效用:

shp2img -m mymapfile.map -o test.png

成功创建地图图像后,请尝试应用程序。注意:Windows用户可能会遇到SHP2IMG工作的问题,但他们的应用程序会抛出类似于此的错误:

Warning: [MapServer Error]: msOGRFileOpen(): Open failed for OGR connection `coal.ovf'.
Unable to initialize ODBC connection to DSN for jeff/test@Data_txt,
[Microsoft][ODBC Driver Manager] Data source name not found
and no default driver specified in D:\ms4w\Apache\htdocs\quickmap.php on line 40

如果发生这种情况,您应该确保已创建系统DSN。