import os import pandas as pd import numpy as np from shapely.geometry import base as shapely_base from shapely.geometry.base import BaseGeometry from datetime import datetime def safe_json(value): """Konversi aman untuk semua tipe numpy/pandas/shapely ke tipe JSON-serializable""" if isinstance(value, (np.int64, np.int32)): return int(value) if isinstance(value, (np.float64, np.float32)): return float(value) if isinstance(value, pd.Timestamp): return value.isoformat() if isinstance(value, shapely_base.BaseGeometry): return str(value) # convert to WKT string if pd.isna(value): return None return value def str_to_date(raw_date: str): if raw_date: try: return datetime.strptime(raw_date, "%Y-%m-%d").date() except Exception as e: print("[WARNING] Tidak bisa parse dateCreated:", e) return None def save_xml_to_sld(xml_string, filename): folder_path = 'style_temp' os.makedirs(folder_path, exist_ok=True) file_path = os.path.join(folder_path, f"{filename}.sld") with open(file_path, "w", encoding="utf-8") as f: f.write(xml_string) return file_path