%matplotlib inline
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
import numpy as np
import ogr, gdal
import os
import sqlite3
#config
layertype = "lines" #Type of features
sqlite_path = 'targetsqlite.db' #location of SQLite file
csv_path = 'csv' #location of csv's on folder
shp_path = 'shp' #location of csv's on folder
geojson_path = 'geojson' #location of csv's on folder
pbf_path = 'romania-latest.osm.pbf' #location of PBF file
#Define Input datasource
driver = ogr.GetDriverByName('PBF') # Format
data_source = ogr.Open(pbf_path, 0) #open Data
LayerCount = data_source.GetLayerCount()
layers = []
# get Required Layer
for i in range(LayerCount):
layers.append(data_source.GetLayer(i).GetName())
print ("Layers in PBF File : " , layers)
#SQLITE Example
if (os.path.isfile(sqlite_path)):
print ( 'Using Already Converted File '+ sqlite_path )
else :
print( 'Converting File ' + pbf_path + " to " + sqlite_path )
dir(os.system('ogr2ogr -f "SQLite" -dsco SPATIALITE=YES ' + sqlite_path + ' ' + pbf_path ))
print ('Done Converting File ' + pbf_path + " to " + sqlite_path)
#Define Input datasource
driver = ogr.GetDriverByName('SQLite') # Format
data_source = driver.Open(sqlite_path) #open Data
LayerCount = data_source.GetLayerCount()
#CSV Example
if os.path.exists(csv_path):
print ( 'Using Already Converted Files in '+ csv_path + ' Folder')
else :
print( 'Converting File ' + pbf_path + " to " + csv_path )
dir(os.system('ogr2ogr -f "CSV" ' + csv_path + ' ' + pbf_path + ' -lco GEOMETRY=AS_WKT'))
print ('Done Converting File ' + pbf_path + " to " + csv_path)
#SHP Example
if os.path.exists(shp_path):
print ( 'Using Already Converted Files in '+ shp_path + ' Folder' )
else :
print( 'Converting File ' + pbf_path + " to " + shp_path )
os.makedirs(shp_path)
for layer in layers:
dir(os.system('ogr2ogr -f "ESRI Shapefile" ' + shp_path + '/' + layer + '.shp' + ' ' + pbf_path + ' ' + layer))
print ('Done Converting File ' + pbf_path + " to " + shp_path + '/' + layer + '.shp ')
#GeoJSON Example
if os.path.exists(geojson_path):
print ( 'Using Already Converted Files in '+ geojson_path + ' Folder' )
else :
print( 'Converting File ' + pbf_path + " to " + geojson_path )
os.makedirs(geojson_path)
for layer in layers:
dir(os.system('ogr2ogr -f "GeoJSON" ' + geojson_path + '/' + layer + '.geojson ' + pbf_path + ' ' + layer))
print ('Done Converting File ' + pbf_path + " to " + geojson_path + '/' + layer + '.geojson ')
#spatialReference
WKT_SR = data_source.GetLayer(0).GetSpatialRef().ExportToWkt()
disk_layer = data_source.GetLayer(3)
#get GeoDataFrame from geojson
layer = 'points'
file = geojson_path + '/' + layer
gdf = gpd.read_file(file)
gdf.crs = WKT_SR