Skip to content

Commit 2c6623b

Browse files
Merge pull request #30 from NSAPH-Data-Processing/convert_gpkg_to_shp
notes script to convert gpkg to shp file
2 parents 2168d9b + 65ffd8b commit 2c6623b

File tree

4 files changed

+175
-0
lines changed

4 files changed

+175
-0
lines changed

notes/global_eda.ipynb

Lines changed: 121 additions & 0 deletions
Large diffs are not rendered by default.

utils/__init__.py

Whitespace-only changes.

utils/convert_gpkg_to_shp.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import geopandas as gpd
2+
import os
3+
import argparse
4+
import fiona
5+
6+
def convert_gpkg_to_shp(input_dir, output_dir):
7+
if not os.path.exists(output_dir):
8+
os.makedirs(output_dir)
9+
10+
for filename in os.listdir(input_dir):
11+
if filename.endswith(".gpkg"):
12+
gpkg_path = os.path.join(input_dir, filename)
13+
layers = fiona.listlayers(gpkg_path)
14+
15+
for layer_name in layers:
16+
layer_gdf = gpd.read_file(gpkg_path, layer=layer_name)
17+
layer_output_dir = os.path.join(output_dir, os.path.splitext(filename)[0])
18+
if not os.path.exists(layer_output_dir):
19+
os.makedirs(layer_output_dir)
20+
layer_output_path = os.path.join(layer_output_dir, f"{layer_name}.shp")
21+
layer_gdf.to_file(layer_output_path, driver='ESRI Shapefile')
22+
print(f"Saved {layer_name} to {layer_output_path}")
23+
24+
if __name__ == "__main__":
25+
parser = argparse.ArgumentParser(description="Convert GeoPackage files to Shapefiles")
26+
parser.add_argument("--input_dir", help="Directory containing .gpkg files")
27+
parser.add_argument("--output_dir", help="Directory to save the converted .shp files")
28+
args = parser.parse_args()
29+
30+
convert_gpkg_to_shp(args.input_dir, args.output_dir)

utils/plot_shp.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import geopandas as gpd
2+
import matplotlib.pyplot as plt
3+
import os
4+
import argparse
5+
6+
def plot_shapefiles(input_dir):
7+
fig, ax = plt.subplots(figsize=(10, 10))
8+
9+
for root, _, files in os.walk(input_dir):
10+
for file in files:
11+
if file.endswith(".shp"):
12+
shapefile_path = os.path.join(root, file)
13+
gdf = gpd.read_file(shapefile_path)
14+
gdf.plot(ax=ax, label=file)
15+
16+
plt.legend()
17+
plt.show()
18+
19+
if __name__ == "__main__":
20+
parser = argparse.ArgumentParser(description="Plot multiple shapefiles")
21+
parser.add_argument("input_dir", help="Directory containing .shp files")
22+
args = parser.parse_args()
23+
24+
plot_shapefiles(args.input_dir)

0 commit comments

Comments
 (0)