Files
metaverseDubai/data/OSM_DATA_RESEARCH.md
2026-07-07 03:43:19 -07:00

5.1 KiB

OpenStreetMap Data Research - Dubai Marina

Overview

Research and documentation for acquiring OpenStreetMap (OSM) data for Dubai Marina district.

Target Area

Location: Dubai Marina, Dubai, UAE
Coordinates: 25.0772° N, 55.1394° E
Bounding Box:

  • Min: 25.07° N, 55.13° E
  • Max: 25.09° N, 55.15° E
  • Format: 25.07,55.13,25.09,55.15

Data Sources

Endpoint: https://overpass-api.de/api/interpreter

Query for Buildings:

[out:xml][bbox:25.07,55.13,25.09,55.15];
(way["building"];);
out meta;

Query for Roads:

[out:xml][bbox:25.07,55.13,25.09,55.15];
(way["highway"];);
out meta;

Query for Complete Area Data:

[out:xml][bbox:25.07,55.13,25.09,55.15];
(
  way["building"];
  way["highway"];
  relation["building"];
);
out meta;

2. Geofabrik Downloads

Regional Extract: Middle East

3. Planet OSM

Full Planet Extract:

Data Acquisition Methods

Method 1: Overpass API (Quick, Small Areas)

Using curl:

curl -X POST \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "data=[out:xml][bbox:25.07,55.13,25.09,55.15];(way[\"building\"];);out meta;" \
  "https://overpass-api.de/api/interpreter" \
  > dubai_marina.osm

Using Python (overpy library):

import overpy

api = overpy.Overpass()
query = """
[bbox:25.07,55.13,25.09,55.15];
(way["building"];);
out body;
"""
result = api.query(query)

Method 2: Geofabrik Download (Larger Areas)

# Download UAE extract
wget https://download.geofabrik.de/asia/united-arab-emirates-latest.osm.pbf

# Extract Dubai Marina area using osmium-tool
osmium extract -b 55.13,25.07,55.15,25.09 \
  united-arab-emirates-latest.osm.pbf \
  -o dubai_marina.osm.pbf

Method 3: Using OSMnx (Python)

import osmnx as ox

# Define area
place = "Dubai Marina, Dubai, UAE"
bounds = (25.07, 55.13, 25.09, 55.15)

# Download buildings
buildings = ox.geometries_from_bbox(
    north=25.09, south=25.07, 
    east=55.15, west=55.13,
    tags={'building': True}
)

# Download roads
roads = ox.graph_from_bbox(
    north=25.09, south=25.07,
    east=55.15, west=55.13,
    network_type='drive'
)

Data Processing

Convert OSM to GeoJSON

Using osmtogeojson:

npm install -g osmtogeojson
osmtogeojson dubai_marina.osm > dubai_marina.geojson

Using Python (osmium):

import osmium
import json

class BuildingHandler(osmium.SimpleHandler):
    def __init__(self):
        osmium.SimpleHandler.__init__(self)
        self.buildings = []
    
    def way(self, w):
        if 'building' in w.tags:
            # Extract building geometry
            # Convert to GeoJSON
            pass

handler = BuildingHandler()
handler.apply_file("dubai_marina.osm")

Process with our script

Using our import script:

python3 scripts/data/import_osm_data.py \
  --output data/processed/dubai_marina_buildings.geojson \
  --bounds "25.07,55.13,25.09,55.15"

Expected Data

Buildings

  • Estimated Count: 50-100 buildings in Dubai Marina area
  • Types: Residential towers, commercial buildings, hotels
  • Key Buildings:
    • Cayan Tower (Hero landmark)
    • Marina Towers
    • Various residential complexes

Roads

  • Main Roads:
    • Sheikh Zayed Road (E11)
    • Dubai Marina Walk
    • Various internal roads

Additional Features

  • Water features (marina)
  • Parks and green spaces
  • Parking areas
  • Sidewalks

Data Quality Considerations

Accuracy

  • OSM data is community-sourced
  • Building footprints may not be 100% accurate
  • Heights are often missing
  • Some buildings may be missing

Validation

  • Cross-reference with satellite imagery
  • Verify building positions
  • Check for missing major buildings
  • Validate road network

Enhancement

  • Add building heights from other sources
  • Refine building footprints using satellite imagery
  • Add missing buildings manually
  • Enhance road network details
  1. Initial Acquisition: Use Overpass API for quick download
  2. Validation: Compare with satellite imagery
  3. Enhancement: Add missing buildings and details
  4. Processing: Convert to GeoJSON for Unreal import
  5. Import: Use our import script to bring into Unreal

Tools Required

  • curl or wget - Download data
  • Python 3.8+ - Processing scripts
  • overpy - Python OSM API client
  • osmnx - Advanced OSM data handling (optional)
  • osmtogeojson - OSM to GeoJSON converter (optional)
  • osmium-tool - Advanced OSM data processing (optional)

Next Steps

  1. Run data/acquire_osm_data.sh to download initial data
  2. Validate data quality
  3. Process with scripts/data/import_osm_data.py
  4. Import to Unreal Engine after project creation

Last Updated: 2024-11-21
Status: Research Complete, Ready for Data Acquisition