건물 클러스터 .shp 파일에 x,y 좌표로 구성된 포인트를 매핑해서 클러스터 내에 속하는 건물의 중심 좌표만 구하기
QGIS에서 TL_SPDB_BULD.shp 파일을 드래그 앤 드랍해서 연다.
건물 클러스터 폴리곤이 표시되는데 127.xxx, 36.xxx와 형식의 위도 경도를 사용하기 위해선 레이어 재투영이라는 걸 해서 좌표계를 epsg:5179 -> epsg:4326 수정해야 한다
생성된 .shp 파일을 다시 QGIS에서 열어준다.
map_building_to_building_cluster_command.py
.txt 파일을 dataframe type으로 변경하면서 x,y 좌표를 4326 좌표계로 변경한다.
building_cluster_polygons_4326.shp을 읽고 geometry(polygon)을 4326 좌표계로 변경한다.
class MapBuildingToBuildingClusterCommand:
def __init__(self) -> None:
self.map_building_to_building_cluster = MapBuildingToBuildingClusterService()
def map(self):
building_points: gpd.GeoDataFrame = BuildingUtil.get_building_points(
file_name="match_build_gwangju.txt"
)
building_cluster_polygons: gpd.GeoDataFrame = (
BuildingUtil.get_building_cluster_polygons(
file_name="building_cluster_polygons_4326.shp"
)
)
self.map_building_to_building_cluster.map_building_to_building_cluster(
building_cluster_polygons=building_cluster_polygons,
building_points=building_points,
)
map_building_to_build_cluster_service.py
geopandas의 sjoin을 사용해서 폴리곤 내에 속하는 좌표를 join해준다.
건물중심점_x좌표, 건물중심점_y좌표를 latitude, longitude로 변경해준다.
dataframe을 merged.csv라는 이름의 csv 파일로 저장한다.
class MapBuildingToBuildingClusterService(MapBuildingToBuildingClusterInterface):
def map_building_to_building_cluster(
self,
building_cluster_polygons: gpd.GeoDataFrame,
building_points: gpd.GeoDataFrame,
) -> None:
merged_building_and_building_cluster: gpd.GeoDataFrame = self._merge(
building_cluster_polygons=building_cluster_polygons,
building_points=building_points,
)
merged_building_and_building_cluster = (
AddColumn.convert_xy_to_longitude_and_latitude(
df=merged_building_and_building_cluster,
x_key="건물중심점_x좌표",
y_key="건물중심점_y좌표",
)
)
merged_building_and_building_cluster = merged_building_and_building_cluster[
["latitude", "longitude"]
]
SaveFile.df_to_csv(
df=merged_building_and_building_cluster,
file_name="merged.csv",
)
https://github.com/copyNdpaste/map-point-to-polygon
QGIS에서 csv 파일 열기
...
클릭하고 csv 파일 선택
건물 클러스터 폴리곤 .shp 파일도 열어주고 그 위에 point를 찍어준다
파란색 건물 클러스터 폴리곤안에 속하는 건물의 중심 좌표가 빨간색으로 표시됐다.