# county centroids ###################################################################### print('finding county centroids') centroids = gp.centroids(countieswgs84) ###################################################################### # adding indicators and dropping unnecessary fields ###################################################################### print('adding indicators') rail70wgs84 = gp.add_constant_field(rail70wgs84, 'rail', 1) rail90wgs84 = gp.add_constant_field(rail90wgs84, 'rail', 1) riverswgs84 = gp.add_constant_field(riverswgs84, 'river', 1) centroids = gp.add_constant_field(centroids, 'centroids', 1) print('dropping unnecessary fields') rail70wgs84 = gp.drop_fields(rail70wgs84, keep_fields=['rail']) rail90wgs84 = gp.drop_fields(rail90wgs84, keep_fields=['rail']) riverswgs84 = gp.drop_fields(riverswgs84, keep_fields=['river']) centroids = gp.drop_fields(centroids, keep_fields=['centroids']) ###################################################################### # splitting with lines, snapping and unioning rivers and rail ###################################################################### print('splitting with lines, snapping and unioning rivers and rail') rail70_split_rivers = gp.split_with_lines(rail70wgs84, riverswgs84) rail90_split_rivers = gp.split_with_lines(rail90wgs84, riverswgs84) rivers_split_rail70 = gp.split_with_lines(riverswgs84, rail70wgs84) rivers_split_rail90 = gp.split_with_lines(riverswgs84, rail90wgs84) rail70_snap_rivers = gp.snap_geometries(rail70_split_rivers, rivers_split_rail70, 0.01) rail90_snap_rivers = gp.snap_geometries(rail90_split_rivers, rivers_split_rail90, 0.01)
gp = GeoProcess() ######################################################### # Fix geometries ######################################################### print('fixing geometries') fix_geo = gp.fix_geometry(wldsin) ######################################################### # Add autoincremental field ######################################################### print('adding autoincremental id-field') autoinc_id = gp.add_autoincremental_id(fix_geo, 'GID') ######################################################### # Copy attribute ######################################################### print('copying language name into a field with shorter attribute name') language_name_copied = gp.copy_attribute(autoinc_id, 'NAME_PROP', 'lnm') ######################################################### # Drop field(s) ######################################################### print('dropping fields except GID, ID, lnm') keepfields = ['GID', 'ID', 'lnm'] gp.drop_fields(language_name_copied, keep_fields=keepfields, output_object=wldsout) print('DONE!')
mainpath = "C:/Users/se.4537/Dropbox/PoliteconGIS/LBS_2020/PhD/lecture_3/gis_data" admin_in = "{}/ne_10m_admin_0_countries/ne_10m_admin_0_countries.shp".format( mainpath) areas_out = "{}/_output/country_areas.csv".format(mainpath) # defining world cylindrical equal area SR crs_wcea = QgsCoordinateReferenceSystem('ESRI:54034') gp = GeoProcess() ################################################################## # Drop field(s) ################################################################## print('dropping unnecessary fields') keepfields = ['ne_10m_adm', 'ADMIN', 'ISO_A3'] countries_drop_fields = gp.drop_fields(admin_in, keep_fields=keepfields) ################################################################## # Reproject layer ################################################################## print('projecting to world cylindical equal area') countries_reprojected = gp.reproject_layer(countries_drop_fields, 'ESRI:54034') ################################################################## # Fix geometries ################################################################## print('fixing geometries') countries_fix_geo = gp.fix_geometry(countries_reprojected) ################################################################## # Field calculator, output to csv
######################################################### print('finding country centroids') country_centroids = gp.centroids(fixgeo_countries) ######################################################### # Add geometry attributes ######################################################### print('adding co-ordinates to centroids') centroids_with_coordinates = gp.add_xycoordinates(country_centroids) ######################################################### # Drop fields ######################################################### print('dropping unnecessary fields, coast') keepfields = ['featurecla'] gp.drop_fields(fixgeo_coast, keep_fields=keepfields, output_object=coastout) ################################################################## # Drop field(s) ################################################################## print('dropping unnecessary fields, centroids') keepfields = ['ne_10m_adm', 'ADMIN', 'ISO_A3', 'xcoord', 'ycoord'] gp.drop_fields(centroids_with_coordinates, keep_fields=keepfields, output_object=centroidsout) ################################################################## # v.distance ################################################################## print('vector distance: country centroids to coast') gp.grass_v_distance(centroidsout,
RASTS = [elevation, temp, prec, landqual, popd1500, popd1990, popd2000] PREFS = ['elev_', 'temp_', 'prec_', 'lqua_', 'pd15_', 'pd19_', 'pd20_'] # elevation, temperature, precipitation are very large raster files, # take a long time to process. we will see faster processing methods at the end. # the code will still run (if you are patient)! # for now, do only the last four rasters RASTS = RASTS[3:] PREFS = PREFS[3:] gp = GeoProcess() ######################################################### # Fix geometries ######################################################### print('fixing geometries') fix_geo = gp.fix_geometry(countries) ######################################################### # Drop fields ######################################################### print('dropping fields except ADMIN, ISO_A3') keepfields = ['ADMIN', 'ISO_A3'] drop_fields = gp.drop_fields(fix_geo, keep_fields=keepfields) ######################################################### # Zonal statistics ######################################################### gp.zonal_statistics_as_csv(drop_fields, RASTS, PREFS, ['mean'], outcsv) print('DONE!')