# set paths to inputs and outputs mainpath = "C:/Users/se.4537/Dropbox/PoliteconGIS/LBS_2020/PhD/lecture_3/gis_data" wldsin = "{}/langa.shp".format(mainpath) outpath = "{}/_output/".format(mainpath) wldsout = "{}/wlds_cleaned.shp".format(outpath) if not os.path.exists(outpath): os.mkdir(outpath) 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)
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) rivers_split_rail70 = gp.fix_geometry(rivers_split_rail70) rivers_split_rail90 = gp.fix_geometry(rivers_split_rail90) rail70_snap_rivers = gp.fix_geometry(rail70_snap_rivers) rail90_snap_rivers = gp.fix_geometry(rail90_snap_rivers) rivers_split_rail70 = gp.multipart_to_singleparts(rivers_split_rail70) rivers_split_rail90 = gp.multipart_to_singleparts(rivers_split_rail90) rail70_snap_rivers = gp.multipart_to_singleparts(rail70_snap_rivers) rail90_snap_rivers = gp.multipart_to_singleparts(rail90_snap_rivers) union_railriver70 = gp.union(rivers_split_rail70, rail70_snap_rivers) union_railriver90 = gp.union(rivers_split_rail90, rail90_snap_rivers) ###################################################################### # creating connector pieces, snapping, splitting and unioning ######################################################################
if not os.path.exists(junkpath): os.mkdir(junkpath) gp = GeoProcess() ######################################################################### ######################################################################### # 2) centroids and distance to coast ######################################################################### ######################################################################### ######################################################### # Fix geometries ######################################################### print('fixing geometries, coast') fixgeo_coast = gp.fix_geometry(coastin) ######################################################### # Fix geometries ######################################################### print('fixing geometries, countries') fixgeo_countries = gp.fix_geometry(adminin) ######################################################### # Centroids ######################################################### print('finding country centroids') country_centroids = gp.centroids(fixgeo_countries) ######################################################### # Add geometry attributes
# set paths to inputs and outputs mainpath = "C:/Users/se.4537/Dropbox/PoliteconGIS/LBS_2020/PhD/lecture_3/gis_data" outpath = "{}/_output/".format(mainpath) greg = "{}/greg_cleaned.shp".format(outpath) wlds = "{}/wlds_cleaned.shp".format(outpath) admin = "{}/ne_10m_admin_0_countries/ne_10m_admin_0_countries.shp".format( mainpath) outcsv = "{}/nlangs_country.csv".format(outpath) gp = GeoProcess() ######################################################### # Fix geometries ######################################################### print('fixing geometries, languages') fixgeo_wlds = gp.fix_geometry(wlds) ######################################################### # Fix geometries ######################################################### print('fixing geometries, countries') fixgeo_countries = gp.fix_geometry(admin) ######################################################### # Intersection ######################################################### print('intersecting languages and countries') intersection = gp.intersect_native(fixgeo_wlds, fixgeo_countries, input_fields_to_keep='GID', overlay_fields_to_keep='ADMIN')
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('calculating areas, outputting to csv') gp.add_area_attribute(countries_fix_geo, 'area', output_object=areas_out) print('DONE!')
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!')
if not os.path.exists(junkpath): os.mkdir(junkpath) gp = GeoProcess() ######################################################################### ######################################################################### # 2) centroids and distance to coast ######################################################################### ######################################################################### ######################################################### # Fix geometries ######################################################### print('fixing geometries, countries') fixgeo_countries = gp.fix_geometry(adminin) ######################################################### # Centroids ######################################################### print('finding country centroids') country_centroids = gp.centroids(fixgeo_countries) ######################################################### # Closest coordinates from points to lines ######################################################### result = gp.find_closest_coordinates_from_points_to_lines(country_centroids, coastin, intermediate_output_folder=junkpath, input_id='ne_10m_adm', input_name='cent', line_name='coast', verbose=True, output_object='memory:') #########################################################