Init
This commit is contained in:
55
init.py
Normal file
55
init.py
Normal file
@ -0,0 +1,55 @@
|
||||
import os
|
||||
import json
|
||||
import psycopg2
|
||||
from datetime import datetime
|
||||
|
||||
# Database connection parameters
|
||||
DB_CONFIG = {
|
||||
"dbname": "ems",
|
||||
"user": "ems",
|
||||
"password": "qFadbNBSaEoc",
|
||||
"host": "172.16.1.210",
|
||||
"port": 5432,
|
||||
}
|
||||
|
||||
# Root directory where the folders are located
|
||||
ROOT_DIR = "./"
|
||||
|
||||
def insert_bounds(entity_id, entity_type, geometry, conn):
|
||||
"""Insert data into the bounds table."""
|
||||
published_at = datetime.now()
|
||||
try:
|
||||
with conn.cursor() as cur:
|
||||
cur.execute(
|
||||
"""
|
||||
INSERT INTO bounds (entity_id, entity_type, geometry, published_at)
|
||||
VALUES (%s, %s, %s, %s);
|
||||
""",
|
||||
(entity_id, entity_type, json.dumps(geometry), published_at)
|
||||
)
|
||||
conn.commit()
|
||||
except Exception as e:
|
||||
print(f"Error inserting entity_id {entity_id} of type {entity_type}: {e}")
|
||||
conn.rollback()
|
||||
|
||||
def process_geojson_files():
|
||||
"""Process all GeoJSON files in the directory structure."""
|
||||
try:
|
||||
conn = psycopg2.connect(**DB_CONFIG)
|
||||
for folder in os.listdir(ROOT_DIR):
|
||||
folder_path = os.path.join(ROOT_DIR, folder)
|
||||
if os.path.isdir(folder_path):
|
||||
entity_type = folder # Folder name is the entity_type
|
||||
for file in os.listdir(folder_path):
|
||||
if file.endswith(".geojson"):
|
||||
entity_id = int(os.path.splitext(file)[0]) # Extract ID from filename
|
||||
file_path = os.path.join(folder_path, file)
|
||||
with open(file_path, "r") as f:
|
||||
geometry = json.load(f)
|
||||
insert_bounds(entity_id, entity_type, geometry, conn)
|
||||
conn.close()
|
||||
except Exception as e:
|
||||
print(f"Error processing files: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
process_geojson_files()
|
Reference in New Issue
Block a user