mysql - writeOGR 层创建失败 - MySQL
问题描述
我正在尝试将多多边形边界加载到 mysql。这是我到目前为止所尝试的,
使用 mysql 驱动程序安装 gdal。在 R 中检查
ogrDrivers()
,它在驱动程序列表中返回 MySQL。db <- 'testdb' user <- 'testuser' pwd <- '****' host <- '127.0.0.1' DSN = paste0('MySQL:',db ,',user=', user, ',host=', host, ',password=', pwd) data_2013 <- readOGR(dsn = "/Path/to/shapefile", layer = "testinglayer") writeOGR(data_2013, dsn=DSN, driver='MySQL',layer='testinglayer', layer_options='ENGINE=Aria', overwrite_layer = TRUE)
但是我收到了这个错误,
Error in writeOGR(data_2013, dsn = DSN, driver = "MySQL", layer = "testinglayer", :
Layer creation failed
或者有没有其他方法可以将空间多边形数据从 R 加载到 MySQL?
编辑:根据要求,
> ogrDrivers()$name
[1] "AeronavFAA" "AmigoCloud" "ARCGEN" "AVCBin" "AVCE00"
[6] "BNA" "CAD" "Carto" "Cloudant" "CouchDB"
[11] "CSV" "CSW" "DGN" "DXF" "EDIGEO"
[16] "ElasticSearch" "ESRI Shapefile" "Geoconcept" "GeoJSON" "Geomedia"
[21] "GeoRSS" "GFT" "GML" "GMLAS" "GPKG"
[26] "GPSBabel" "GPSTrackMaker" "GPX" "HTF" "HTTP"
[31] "Idrisi" "Interlis 1" "Interlis 2" "JML" "JP2OpenJPEG"
[36] "JPEG2000" "KML" "LIBKML" "MapInfo File" "Memory"
[41] "MSSQLSpatial" "MySQL" "NAS" "netCDF" "ODBC"
[46] "ODS" "OGR_DODS" "OGR_GMT" "OGR_PDS" "OGR_SDTS"
[51] "OGR_VRT" "OpenAir" "OpenFileGDB" "OSM" "PCIDSK"
[56] "PGDUMP" "PGeo" "PLSCENES" "REC" "S57"
[61] "SEGUKOOA" "SEGY" "Selafin" "SQLite" "SUA"
[66] "SVG" "SXF" "TIGER" "UK .NTF" "VDV"
[71] "VFK" "Walk" "WAsP" "WFS" "XLS"
[76] "XLSX" "XPlane"
解决方案
首先,感谢@SeGa 的持续帮助,使用它,我终于可以设法加载数据。但是有一些更正,这就是为什么我将其详细说明为单独的答案。
library(sf)
fname <- "/path/to/shapefile/data_2013.shp"
data_2013 <- st_read(fname)
db <- 'testdb'
user <- 'testuser'
pwd <- '****'
host <- '127.0.0.1'
port <- 3306
DSN = paste0('MySQL:',db ,',user=', user,',password=', pwd, ',port=', port)
st_write(obj = data_2013, dsn = DSN, layer = "data_2013")
DSN 必须与上述完全相同,其中没有“dbname”字符串。此外,顺序必须完全如此。因为,gdal 期望,如果您查看此链接 - http://www.gdal.org/drv_mysql.html
我试过用mysql连接,它没有用,但是给mysql dsn工作。唯一的问题是,这会在数据库中创建一些额外的表(geometry_columns、spatial_ref_sys)。
再次感谢您的帮助@SeGa。
推荐阅读
- html - MVC 中的 Ajax.BeginForm 仅适用于 IE
- javascript - React js,将 fetch url 与另一个 fetch 混淆
- system-design - 系统设计/架构 - 搜索引擎 - “以 60 万美元的预算购买新泽西生活石的房屋”?
- reactjs - React 中的 IFrame,zabbix
- arrays - 在函数 SwiftUI 中访问变量
- neo4j - 如何找到与给定节点共享至少 n 个节点的所有节点
- class - 使变量等于类中的 Arraylist 值(处理)
- javascript - 在 try 块中抛出异常后,catch 块不会立即执行
- c# - PDB文件未与exe和源代码配对
- ansible - 生成的 podman systemd 文件无法启用