Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 使用Ogr2ogr从SQL Server创建形状文件_Sql Server 2008_Spatial_Shapefile_Ogr - Fatal编程技术网

Sql server 2008 使用Ogr2ogr从SQL Server创建形状文件

Sql server 2008 使用Ogr2ogr从SQL Server创建形状文件,sql-server-2008,spatial,shapefile,ogr,Sql Server 2008,Spatial,Shapefile,Ogr,我试图在命令窗口中运行以下代码。代码会执行,但在.SHP文件中没有给出任何值。该表的GeographyCollections和多边形存储在Geography类型的字段中。我在sql语句中尝试了许多不同的地理类型-二进制、文本等,但没有成功。输出.DBF文件有数据,因此与数据库的连接可以正常工作,但shape.Shp文件和.shx文件没有数据,大小分别为17K和11k 有什么建议吗 ogr2ogr -f "ESRI Shapefile" -overwrite c:\temp -nln Zip_St

我试图在命令窗口中运行以下代码。代码会执行,但在.SHP文件中没有给出任何值。该表的GeographyCollections和多边形存储在Geography类型的字段中。我在sql语句中尝试了许多不同的地理类型-二进制、文本等,但没有成功。输出.DBF文件有数据,因此与数据库的连接可以正常工作,但shape.Shp文件和.shx文件没有数据,大小分别为17K和11k

有什么建议吗

ogr2ogr -f "ESRI Shapefile" -overwrite c:\temp -nln Zip_States -sql "SELECT [ID2],[STATEFP10],[ZCTA5CE10],GEOMETRY::STGeomFromWKB([Geography].STAsBinary(),4326).STAsText() AS [Geography] FROM [GeoSpatial].[dbo].[us_State_Illinois_2010]" ODBC:dbo/GeoSpatial@PPDULCL708504 

ESRI shapefile只能包含一种单一类型的几何图形——点、线串、多边形等

您的描述表明您的查询返回多种类型的几何体,因此请首先对其进行限制(例如,使用
STGeometryType()==“POLYGON”

其次,您当前正在使用statext()以文本字符串的形式返回空间字段,但您并没有告诉OGR它是一个空间字段,因此它可能只是将WKT视为常规文本列,并将其作为属性添加到dbf文件中

要告诉OGR哪个列包含您的空间信息,可以将“Tables”参数添加到连接字符串中。但是,如果您使用的是SQL Server 2008,则没有理由从WKT/WKB执行所有强制转换-OGR2OGR将很好地加载SQL Server的本机二进制格式

您实际使用的是SQL Server 2008还是Denali?因为序列化格式已更改,并且OGR2OGR无法读取新格式。因此,在这种情况下,首先转换为WKB更安全(但速度较慢)

以下内容适用于我将多边形表从SQL Server转储到Shapefile:

ogr2ogr -f "ESRI Shapefile" -overwrite c:\temp -nln Zip_States -sql "SELECT ID, geom26986.STAsBinary() FROM [Spatial].[dbo].[OUTLINE25K_POLY]" "MSSQL:server=.\DENALICTP3;database=Spatial;trusted_connection=yes;Tables=dbo.OUTLINE25K_POLY(geom26986)"

请尝试以下命令

ogr2ogr shapeFileName.shp -overwrite -sql "select top 10 * from schema.table" "MSSQL:Server=serverIP;Database=dbname;Uid=userid;trusted_connection=no;Pwd=password" -s_srs EPSG:4326 -t_srs EPSG:4326

连接字符串中的表没有解决我的类似问题。不过,明确的演员阵容做到了<代码>几何体::STGeomFromWKB(shape.statsbinary(),26912)将方言更改为OGRSQL解决了这个双重强制转换问题。