from brdr.aligner import Aligner
from brdr.geometry_utils import geom_from_wkt
from brdr.loader import DictLoader
THEME_ID = "theme_id_1"
REFERENCE_ID = "ref_id_1"
RELEVANT_DISTANCE = 1
aligner = Aligner(crs="EPSG:31370")
# Load thematic geometry.
thematic_geometries = {THEME_ID: geom_from_wkt("POLYGON ((0 0, 0 9, 5 10, 10 0, 0 0))")}
aligner.load_thematic_data(DictLoader(thematic_geometries))
# Load reference geometry.
reference_geometries = {
REFERENCE_ID: geom_from_wkt("POLYGON ((0 1, 0 10,8 10,10 1,0 1))")
}
aligner.load_reference_data(DictLoader(reference_geometries))
# Run alignment for a single relevant distance.
aligner_result = aligner.process(relevant_distances=[RELEVANT_DISTANCE])
process_results = aligner_result.get_results(aligner=aligner)
# Print result geometries in WKT.
print("result: " + process_results[THEME_ID][RELEVANT_DISTANCE]["result"].wkt)
print(
"added area: "
+ process_results[THEME_ID][RELEVANT_DISTANCE]["result_diff_plus"].wkt
)
print(
"removed area: "
+ process_results[THEME_ID][RELEVANT_DISTANCE]["result_diff_min"].wkt
)
# OPTIONAL - export results to GeoDataFrame
# results_gdf = aligner_result.get_results_as_geodataframe(
# aligner=aligner,
# add_metadata=True,
# add_original_attributes=True,
# )
# # GeoDataFrame export (one row per theme_id + relevant_distance).
# print("gdf columns: " + ", ".join(results_gdf.columns.astype(str)))
# print(results_gdf[[aligner.thematic_data.id_fieldname, "relevant_distance"]].head())
result: POLYGON ((0.1685303876974549 0.4444297669803975, 0.0761204674887134 0.6173165676349098, 0.0192147195967695 0.8049096779838716, 0 1, 0 10, 4.999999999999999 10, 9.500000000000004 1, 9.381966011250102 1, 9.36275129165333 0.8049096779838723, 9.305845543761384 0.6173165676348947, 9.213435623552671 0.4444297669804294, 9.089072792436635 0.2928932188134386, 8.937536244269706 0.1685303876974548, 8.76464944361519 0.0761204674887132, 8.577056333266233 0.0192147195967696, 8.3819660112501 -1.734723475976807e-18, 0.9999999999999997 -1.734723475976807e-18, 0.8049096779838718 0.0192147195967696, 0.6173165676349087 0.0761204674887139, 0.4444297669803966 0.1685303876974555, 0.2928932188134523 0.2928932188134525, 0.1685303876974549 0.4444297669803975))
added area: POLYGON ((0 10, 4.99850865709512 10, 4.9985376179666465 9.99970752359333, 0 9, 0 10))
removed area: MULTIPOLYGON (((8.513713891647056 0, 8.76464944361519 0.0761204674887132, 8.937536244269706 0.1685303876974548, 9.089072792436633 0.2928932188134385, 9.213435623552671 0.4444297669804296, 9.305845543761384 0.6173165676348947, 9.36275129165333 0.8049096779838723, 9.381966011250102 1, 9.5 1, 10 0, 8.513713891647056 0)), ((1.734723475976807e-18 0.86825211960305, 0.0761204674887134 0.6173165676349098, 0.1685303876974549 0.4444297669803975, 0.2928932188134523 0.2928932188134525, 0.4444297669803966 0.1685303876974556, 0.6173165676349087 0.0761204674887139, 0.8682521196030504 0, 1.734723475976807e-18 0, 1.734723475976807e-18 0.86825211960305)))