cboettig commited on
Commit
f144e02
·
1 Parent(s): d341413

better raster-vector extraction

Browse files
Files changed (1) hide show
  1. raster-vector-extract.py +53 -0
raster-vector-extract.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # +
2
+ from exactextract import exact_extract
3
+ from osgeo import ogr, gdal
4
+ from pathlib import Path
5
+ from joblib import Parallel, delayed
6
+
7
+ def extract(raster, vector, layer, output = None):
8
+ if output is None:
9
+ output = Path(raster).with_suffix('.csv').name
10
+
11
+ gdal.UseExceptions()
12
+ ogr.UseExceptions()
13
+ rast = gdal.Open(raster)
14
+ vrt = f"""
15
+ <OGRVRTDataSource>
16
+ <OGRVRTWarpedLayer>
17
+ <OGRVRTLayer name="combined">
18
+ <SrcDataSource>{vector}</SrcDataSource>
19
+ <SrcLayer>{layer}</SrcLayer>
20
+ </OGRVRTLayer>
21
+ <TargetSRS>{rast.GetSpatialRef().ExportToWkt()}</TargetSRS>
22
+ </OGRVRTWarpedLayer>
23
+ </OGRVRTDataSource>
24
+ """
25
+ polys = ogr.Open(vrt)
26
+ exact_extract(rast, polys, 'mean', output='gdal', output_options = {'filename' : output })
27
+ return output
28
+
29
+
30
+ # -
31
+
32
+ vector = "/home/rstudio/source.coop/cboettig/pad-us-3/PADUS3_0Geopackage.gpkg"
33
+ layer = "PADUS3_0Combined_DOD_TRIB_Fee_Designation_Easement"
34
+
35
+ rasters = [
36
+ "/home/rstudio/boettiger-lab/us-pa-policy/hfp_2021_100m_v1-2_cog.tif",
37
+ '/home/rstudio/source.coop/vizzuality/lg-land-carbon-data/deforest_carbon_100m_cog.tif',
38
+ '/home/rstudio/source.coop/vizzuality/lg-land-carbon-data/natcrop_bii_100m_cog.tif',
39
+ '/home/rstudio/source.coop/vizzuality/lg-land-carbon-data/natcrop_fii_100m_cog.tif',
40
+ '/home/rstudio/source.coop/vizzuality/lg-land-carbon-data/natcrop_expansion_100m_cog.tif',
41
+ '/home/rstudio/source.coop/vizzuality/lg-land-carbon-data/natcrop_reduction_100m_cog.tif',
42
+ '/home/rstudio/source.coop/cboettig/carbon/cogs/irrecoverable_c_total_2018.tif',
43
+ '/home/rstudio/source.coop/cboettig/carbon/cogs/manageable_c_total_2018.tif',
44
+ '/home/rstudio/minio/shared-biodiversity/redlist/cog/combined_rwr_2022.tif',
45
+ '/home/rstudio/minio/shared-biodiversity/redlist/cog/combined_sr_2022.tif',
46
+ #'/home/rstudio/source.coop/cboettig/mobi/species-richness-all/SpeciesRichness_All.tif',
47
+ #'/home/rstudio/source.coop/cboettig/mobi/range-size-rarity-all/RSR_All.tif',
48
+ ]
49
+ # extract(rasters[0], vector, layer) # just one
50
+
51
+ parallel_extract = delayed(extract)
52
+ runner = Parallel(n_jobs=-1)
53
+ runner(parallel_extract(i, vector, layer) for i in rasters)