feat(tactical): sovereign military suite with 100% real satellite DEM intervisibility, viewshed 360, offline engines, and entitlements
This commit is contained in:
@@ -10,6 +10,7 @@ import { PlaceIraq } from './entities/place-iraq.entity';
|
||||
import { BasePlace } from './entities/base-place.entity';
|
||||
import { OsmArea } from './entities/osm-area.entity';
|
||||
import { OsmPointWithArea } from './entities/osm-point-with-area.entity';
|
||||
import { getElevationMeters } from '../common/gis.utils';
|
||||
|
||||
@Injectable()
|
||||
export class GeocodingService {
|
||||
@@ -247,14 +248,21 @@ export class GeocodingService {
|
||||
const full_address = addressParts.length > 0 ? addressParts.join('، ') : (r.address || '');
|
||||
const nameAr = r.name_ar || r.name;
|
||||
const displayName = relativePrefix ? `${relativePrefix} ${nameAr}` : nameAr;
|
||||
const lat = parseFloat(r.latitude);
|
||||
const lng = parseFloat(r.longitude);
|
||||
const elevationMeters = r.elevation_meters !== undefined && r.elevation_meters !== null
|
||||
? Number(r.elevation_meters)
|
||||
: getElevationMeters(lat, lng);
|
||||
|
||||
return {
|
||||
...r,
|
||||
name: displayName,
|
||||
name_ar: displayName,
|
||||
latitude: parseFloat(r.latitude),
|
||||
longitude: parseFloat(r.longitude),
|
||||
latitude: lat,
|
||||
longitude: lng,
|
||||
elevation_meters: elevationMeters,
|
||||
distance_km: r.distance ? (Number(r.distance) / 1000).toFixed(2) : null,
|
||||
location: { lat: parseFloat(r.latitude), lng: parseFloat(r.longitude) },
|
||||
location: { lat, lng, elevation: elevationMeters },
|
||||
full_address,
|
||||
};
|
||||
});
|
||||
@@ -527,12 +535,20 @@ export class GeocodingService {
|
||||
humanReadable = [iraqiAddress.text, landmark].filter(Boolean).join(' — ');
|
||||
}
|
||||
|
||||
const resLat = parseFloat(r.latitude);
|
||||
const resLng = parseFloat(r.longitude);
|
||||
const elevMeters = r.elevation_meters !== undefined && r.elevation_meters !== null
|
||||
? Number(r.elevation_meters)
|
||||
: getElevationMeters(resLat, resLng);
|
||||
|
||||
return {
|
||||
...r,
|
||||
mahalla: iraqiAddress?.mahalla,
|
||||
zuqaq: iraqiAddress?.zuqaq,
|
||||
latitude: parseFloat(r.latitude),
|
||||
longitude: parseFloat(r.longitude),
|
||||
latitude: resLat,
|
||||
longitude: resLng,
|
||||
elevation_meters: elevMeters,
|
||||
location: { lat: resLat, lng: resLng, elevation: elevMeters },
|
||||
human_readable_address: humanReadable,
|
||||
full_address: fullAddressParts.join('، ')
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user