Skip to content

Create Geographic Location Profile for IGM-s #53

@Haigutus

Description

@Haigutus
  • Substations
  • Lines

Summary: Query geojson from openstreet maps substation/line locations. Get substation/line mRID and named from EQ profile. Map geojson names and substaion/line names.

  1. Query geo data from open street maps (example query - https://overpass-turbo.eu/s/1Iem) NB! Use geojson format as export
  2. Get relevant objects form IGM (substations, etc.) using triplets data.type_tableview("Substation")
  3. Fuzzy search/map names form open street maps and object names form EQ (https://pypi.org/project/thefuzz/)
  4. Generate CIM GL profiles instance using triplets
    1. cim:CoordinateSystem
    2. cim:Location (Location -> PowerSystemResources and Location -> CoordinateSystem
    3. cim:PositionPoint (PositionPoint -> Location)

geojson Example - https://geojson.org/

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [125.6, 10.1]
  },
  "properties": {
    "name": "Dinagat Islands"
  }
}

CIM GL Example

	<cim:CoordinateSystem rdf:ID="_aeae4b90-1057-9c4b-b328-824fd84955e4">
		<cim:CoordinateSystem.crsUrn>urn:ogc:def:crs:EPSG:4326</cim:CoordinateSystem.crsUrn>
	</cim:CoordinateSystem>
	<cim:Location rdf:ID="_b315a61a-1b3f-2348-bbb6-97ae8309f715">
		<cim:Location.PowerSystemResources rdf:resource="#_0047886e-1940-4cca-8ea7-f7066fd04d1e"/>
		<cim:Location.CoordinateSystem rdf:resource="#_aeae4b90-1057-9c4b-b328-824fd84955e4"/>
	</cim:Location>
	<cim:PositionPoint rdf:ID="_374827bb-db2a-3342-84f4-cb39a934de1d">
		<cim:PositionPoint.Location rdf:resource="#_087838f1-1a92-394d-afc6-dfbdc454d77b"/>
		<cim:PositionPoint.sequenceNumber>1</cim:PositionPoint.sequenceNumber>
		<cim:PositionPoint.xPosition>24.8</cim:PositionPoint.xPosition>
		<cim:PositionPoint.yPosition>59.3</cim:PositionPoint.yPosition>
	</cim:PositionPoint>
import overpass
import geopandas as gpd

# Initialize the Overpass API
api = overpass.API(timeout=500)

# Fetch data from Overpass API
res = api.get("""
    area[name="Granollers"][admin_level=8];
    (way["highway"](area);
     relation["highway"](area);
    );
""", verbosity='geom')

# Convert the Overpass response (GeoJSON) to a GeoDataFrame
gdf = gpd.GeoDataFrame.from_features(res)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions