我想在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的命令行...)