MySQL

司机简称

MySQL

生成依赖项

MySQL库

此驱动程序在中实现对空间数据的读写访问 MySQL 桌子。

打开数据库时,其名称应以“MYSQL:dbname”的形式指定 [,选项] 其中选项可以包括逗号分隔的项,如“user”= 用户标识 “,”密码= 密码 “,”主机= host “和”端口= port “。

还有,一张桌子= 桌子桌子 可以添加“…”选项以限制对数据库中特定表列表的访问。当一个数据库有很多表时,这个选项主要是有用的,扫描它们的所有模式将花费大量的时间。

目前,从OGR的角度来看,所有常规用户表都假定为层,其中表名作为层名。当前不支持命名视图。

如果一个整数字段是主键,它将被用作FID,否则FID将被顺序分配,而FID的获取将非常缓慢。

默认情况下,SQL语句直接传递给MySQL数据库引擎。也可以请求驱动程序使用 OGR SQL 发动机,通过 “OGRSQL” ExecuteSQL()方法的字符串,作为SQL方言的名称。

驱动程序功能

Supports Create()

This driver supports the GDALDriver::Create() operation

Supports Georeferencing

This driver supports georeferencing

告诫

  • 对于由SQL语句定义的层,名为“OGC_FID”的字段或定义为非空的字段是主键,并且是类似整数的字段将被假定为FID。

  • 使用WKB格式从MySQL读取几何字段。众所周知,MySQL 5.0.16之前的版本在生成WKB时存在问题,可能无法正常工作。

  • OGR_FID列可以用MYSQL_FID layer creation选项覆盖,它实现为 INT UNIQUE NOT NULL AUTO_INCREMENT 字段。这似乎隐式地在字段上创建了一个索引。

  • 几何列,默认为 SHAPE 并且可以用GEOMETRY_NAME layer creation选项覆盖,创建为 不为空 列,除非禁用空间索引。默认情况下,在创建表的点创建空间索引。

  • SRS信息使用OGC Simple Features for SQL布局存储,其中 geometry_columnsspatial_ref_sys 正在指定数据库中创建的元数据表(如果它们不存在)。这个 spatial_ref_sys 桌子是 not 预先填充SRS和EPSG值,如PostGIS。如果找不到给定表的EPSG代码,则将使用MAX(SRID)值。对于MySQL 8.0或更高版本 ST_SPATIAL_REFERENCE_SYSTEMS 使用数据库提供的表而不是 spatial_ref_sys .

  • 可以使用 MYSQL_TIMEOUT 环境变量。例如,设置MYSQL_TIMEOUT=3600。只有当MySQL服务器的操作系统是Windows时,这个变量才有可能产生影响。

  • MySQL驱动程序使用客户机交互模式打开到数据库的连接。您可以根据需要在服务器的mysql.ini或mysql.cnf文件中调整此设置(交互超时)。

  • 我们正在使用WKT将几何图形插入数据库。如果要插入大几何图形,则需要注意 max_allowed_packet MySQL配置中的参数。默认情况下,它设置为1米,但对于真正的大几何图形来说,这将不够大。如果您收到如下错误消息: Got a packet bigger than 'max_allowed_packet' bytes ,则需要增加此参数。

创建问题

MySQL驱动程序不支持创建新的数据集(MySQL中的数据库),但它允许在现有数据库中创建新的层。

默认情况下,MySQL驱动程序在创建和读取MySQL层时将尝试保持OGR特性的精度。对于具有指定宽度的整数字段,它将使用 DECIMAL 作为MySQL字段类型,指定精度为0。对于实际字段,它将使用 DOUBLE 以指定的宽度和精度。对于指定宽度的字符串字段, VARCHAR 将被使用。

MySQL驱动程序现在不允许字符编码。

MySQL驱动程序此时不是事务性的。

图层创建选项

  • OVERWRITE :这可能是“是”,以强制在创建请求的层之前销毁所需名称的现有层。

  • LAUNDER :这可能是“是”,以强制在此层上创建的新字段将其字段名“清洗”为与MySQL更兼容的形式。这将转换为小写,并将一些特殊字符,如“-”和“#”转换为“#”。如果“否”,则保留准确的名称。默认值为“是”。

  • PRECISION :在创建和读取MySQL层时,尝试保留字段宽度和精度可能是“TRUE”。默认值为“TRUE”。

  • GEOMETRY_NAME :此选项指定几何列的名称。默认值为“SHAPE”。

  • FID :此选项指定FID列的名称。默认值为“OGR_FID”。注意:在GDAL 2之前的版本中,这个选项被称为MYSQL_FID

  • 菲德64 :这可能为“TRUE”,以创建可支持64位标识符的FID列。默认值为“FALSE”。

  • SPATIAL_INDEX :可以是“否”,以停止在几何体列上自动创建空间索引,从而允许空几何体并可能更快地加载。

  • ENGINE :可以选择指定要使用的数据库引擎。在MySQL 4.x中,对于空间表,必须将其设置为MyISAM。

以下示例数据源名称打开数据库架构 西荷兰 带密码 psv9570型 对于用户ID root 在港口 3306 . 未提供主机名,因此假定为localhost。tables=指令意味着只扫描bedrijven表并将其显示为一个层以供使用。

MYSQL:westholland,user=root,password=psv9570,port=3306,tables=bedrijven

下面的示例使用ogr2ogr创建将world_borders层从shapefile复制到MySQL表中。它用现有名称覆盖表 边界2 ,设置图层创建选项以将几何图形列名指定为 形状2 .

ogr2ogr -f MySQL MySQL:test,user=root world_borders.shp -nln borders2 -update -overwrite -lco GEOMETRY_NAME=SHAPE2

下面的示例使用ogrinfo返回有关测试数据库中borders2层的一些摘要信息。

ogrinfo MySQL:test,user=root borders2 -so

    Layer name: borders2
    Geometry: Polygon
    Feature Count: 3784
    Extent: (-180.000000, -90.000000) - (180.000000, 83.623596)
    Layer SRS WKT:
    GEOGCS["GCS_WGS_1984",
        DATUM["WGS_1984",
            SPHEROID["WGS_84",6378137,298.257223563]],
        PRIMEM["Greenwich",0],
        UNIT["Degree",0.017453292519943295]]
    FID Column = OGR_FID
    Geometry Column = SHAPE2
    cat: Real (0.0)
    fips_cntry: String (80.0)
    cntry_name: String (80.0)
    area: Real (15.2)
    pop_cntry: Real (15.2)