算法更新

This commit is contained in:
attiya 2025-05-13 14:42:40 +08:00
parent 081dc26d85
commit f3f7474c25
2 changed files with 32 additions and 1 deletions

View File

@ -321,8 +321,10 @@ public class RedisUtil {
Polygon polygon = parsePolygonFromWKT(polygonFromWKT);
return isPointInPolygon(lng, lat, polygon);
}
/**
* 判断坐标点是否在附近站点区内
* 判断坐标点是否在附近站点区内并返回站点id
* @param lng 经度
* @param lat 纬度
* @return true-在内部false-在外部或边界上根据业务需求调整

View File

@ -253,6 +253,35 @@ public class RedisUtil {
return isPointInPolygon(lng, lat, polygon);
}
/**
* 判断坐标点是否在附近站点区内并返回站点id
* @param lng 经度
* @param lat 纬度
* @return true-在内部false-在外部或边界上根据业务需求调整
*/
public Long isPointInSiteWithSiteRegionId(double lng, double lat,Long areaId) {
//查询附近停车区
List<String> nearbyParking = findNearbyParking(lng, lat,areaId);
if (nearbyParking.isEmpty()) {
return null;
}
//获取第一个大致包含该点位的停车区
String regionId = checkPointInArea(lng, lat, nearbyParking,areaId);
if (regionId == null) {
return null;
}
//进行更精确的判断
String polygonFromWKT = getPolygonFromWKT(areaId,regionId,"parking_area:meta:");
Polygon polygon = parsePolygonFromWKT(polygonFromWKT);
boolean inPolygon = isPointInPolygon(lng, lat, polygon);
if (inPolygon) {
return Long.valueOf(regionId);
}
return null;
}
/**
* 判断坐标点是否在附近运营区内
* @param lng 经度