postgis查询以通过OGR2OGR进行shp

时间:2018-08-16 14:31:04

标签: gis postgis ogr2ogr

我想在Postgis 2.3.2中运行SQL查询,将结果转换为shapefile(使用OGR2OGR) 这是从pgADmin完全正常的SQL查询:

idx1 = df.index.get_level_values(0).to_series()
idx2 = df.index.get_level_values(1)
idx = idx1.mask(idx1.isin(idx2)).ffill().astype(int)

df = df.set_index([idx, idx2])
print (df)
               given_name
index1 index2            
1      2              1.0
       3              0.0
       4              1.0
       5              0.5
6      7              1.0
       8              1.0
       9              0.0

尝试在ogr2ogr中执行(请参见下文),“剪切”部分无效,因此我获得了完整的postGIS表(但在保存的shapefile中)

select geom,a_code as code,ST_Area(ST_Transform(ST_Intersection(TABLE1.geom, 
 ST_GeomFromText('POLYGON((31.7 -13.1, 31.6 
 -13.047372256948787,31.964721679687504 -13.04,31.9 -13.1,31.7 
 -13.1))',4326) ),32736))*0.0001::double precision as area from TABLE1 where...

后来我发现了类似...的参数

ogr2ogr -f 'ESRI Shapefile' unzipped/test_sql.shp PG:'host=myhost user=user 
dbname=dbname password=ww!' -sql 'select geom,a_code as 
code,ST_Area(ST_Transform(ST_Intersection(TABLE1.geom, 
ST_GeomFromText('POLYGON((31.7 -13.1, 31.6 
-13.047372256948787,31.964721679687504 -13.04,31.9 -13.1,31.7 -13.1))',4326) 
),32736))*0.0001::double precision as area from TABLE1 where...'

但是我认为这些参数都不符合我的需求,因为正如您在SQL代码上所看到的那样,我正在即时重新投影以计算边界框所裁剪的每个代码的面积。 ..所以恐怕我需要完整的postGIS SQL

如果这不能通过ogr2ogr完成,您可以建议我使用其他工具吗? (以编程方式执行,就像通过PHP的命令行...)

0 个答案:

没有答案