diff --git a/uniro_backend/src/main/java/com/softeer5/uniro_backend/common/utils/GeoUtils.java b/uniro_backend/src/main/java/com/softeer5/uniro_backend/common/utils/GeoUtils.java index ea1945e..113ac51 100644 --- a/uniro_backend/src/main/java/com/softeer5/uniro_backend/common/utils/GeoUtils.java +++ b/uniro_backend/src/main/java/com/softeer5/uniro_backend/common/utils/GeoUtils.java @@ -43,4 +43,13 @@ public static String convertDoubleToLineStringWTK(List co){ return writer.write(lineString); } + public static String makeSquarePolygonString(double leftUpLng, double leftUpLat, double rightDownLng, double rightDownLat){ + return String.format("Polygon((%f %f, %f %f, %f %f, %f %f, %f %f))" + , leftUpLng,leftUpLat + , leftUpLng,rightDownLat + , rightDownLng, rightDownLat + , rightDownLng, leftUpLat + , leftUpLng, leftUpLat); + } + } diff --git a/uniro_backend/src/main/java/com/softeer5/uniro_backend/node/repository/BuildingRepository.java b/uniro_backend/src/main/java/com/softeer5/uniro_backend/node/repository/BuildingRepository.java index 9049dc7..a231d1b 100644 --- a/uniro_backend/src/main/java/com/softeer5/uniro_backend/node/repository/BuildingRepository.java +++ b/uniro_backend/src/main/java/com/softeer5/uniro_backend/node/repository/BuildingRepository.java @@ -18,9 +18,9 @@ public interface BuildingRepository extends JpaRepository, Build JOIN FETCH Node n ON b.nodeId = n.id WHERE b.univId = :univId AND b.level >= :level - AND ST_Within(n.coordinates, ST_MakeEnvelope(:lux, :luy, :rdx, :rdy, 4326)) + AND ST_Within(n.coordinates, ST_PolygonFromText((:polygon),4326)) """) - List findByUnivIdAndLevelWithNode(Long univId, int level, double lux , double luy, double rdx , double rdy); + List findByUnivIdAndLevelWithNode(Long univId, int level, String polygon); @Query(""" SELECT new com.softeer5.uniro_backend.node.dto.BuildingNode(b, n) diff --git a/uniro_backend/src/main/java/com/softeer5/uniro_backend/node/service/NodeService.java b/uniro_backend/src/main/java/com/softeer5/uniro_backend/node/service/NodeService.java index 0652e1a..84907d3 100644 --- a/uniro_backend/src/main/java/com/softeer5/uniro_backend/node/service/NodeService.java +++ b/uniro_backend/src/main/java/com/softeer5/uniro_backend/node/service/NodeService.java @@ -16,6 +16,8 @@ import lombok.RequiredArgsConstructor; +import static com.softeer5.uniro_backend.common.utils.GeoUtils.makeSquarePolygonString; + @Service @RequiredArgsConstructor @Transactional(readOnly = true) @@ -26,8 +28,8 @@ public List getBuildings( Long univId, int level, double leftUpLng, double leftUpLat, double rightDownLng , double rightDownLat) { - List buildingNodes = buildingRepository.findByUnivIdAndLevelWithNode( - univId, level, leftUpLng, leftUpLat, rightDownLng, rightDownLat); + String polygon = makeSquarePolygonString(leftUpLng, leftUpLat, rightDownLng, rightDownLat); + List buildingNodes = buildingRepository.findByUnivIdAndLevelWithNode(univId, level, polygon); return buildingNodes.stream() .map(buildingNode -> GetBuildingResDTO.of(buildingNode.getBuilding(), buildingNode.getNode()))