首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >writeOGR层创建失败- MySQL

writeOGR层创建失败- MySQL
EN

Stack Overflow用户
提问于 2018-05-28 05:43:34
回答 2查看 785关注 0票数 1

我试图加载多多边形边界到mysql。以下是我迄今所尝试过的,

  1. 安装了带有mysql驱动程序的gdal。在R中使用ogrDrivers()进行检查,它在驱动程序列表中返回MySQL。 db <- 'testdb‘用户<- 'testuser’pwd <-‘*’主机<- '127.0.0.1‘DSN =paste0(’MySQL:,db,',user=',user,',主机,',口令=‘,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)

但我得到了这个错误,

代码语言:javascript
复制
Error in writeOGR(data_2013, dsn = DSN, driver = "MySQL", layer = "testinglayer",  : 
  Layer creation failed

或者还有其他方法可以将空间多边形数据从R加载到MySQL?

编辑:根据要求,

代码语言:javascript
复制
> 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"   
EN

回答 2

Stack Overflow用户

发布于 2018-05-28 06:39:10

看看这个链接,参数必须是逗号分隔的。所以也许这会奏效:

代码语言:javascript
复制
DSN = paste0('MYSQL:dbname=',db ,', user=', user, ', host=', host, ', password=', pwd, ', port=', port)

或者您试过使用sf包吗?

代码语言:javascript
复制
DSN = paste0('MYSQL:dbname=',db ,' user=', user, ' host=', host, ' port=', port, ' password=', pwd)

library(sf)
data(meuse)
st_write(st_as_sf(meuse, coords = c("x","y")), dsn = DSN,  layer = "testinglayer")

或将host <- '127.0.0.1'更改为host <- "localhost"

票数 1
EN

Stack Overflow用户

发布于 2018-05-28 22:07:06

首先,感谢@SeGa的不断帮助,使用它,我可以设法最终加载数据。但有一些更正,这就是为什么我要详细说明作为一个单独的答案。

代码语言:javascript
复制
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期望,如果您查看这个链接- mysql.html

我试着用mysql连接,它不起作用,但是给mysql起作用了。唯一的问题是,这会在数据库中创建一些额外的表(geometry_columns、spatial_ref_sys)。

再次感谢你的帮助@SeGa。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50559801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档