{"id":15877852,"url":"https://github.com/oseiskar/citygmltools","last_synced_at":"2025-04-01T23:24:37.693Z","repository":{"id":145779525,"uuid":"423127792","full_name":"oseiskar/CityGMLTools","owner":"oseiskar","description":"Convert CityGML models (of Espoo) to OBJ format defined in WGS84 ENU","archived":false,"fork":false,"pushed_at":"2021-11-01T07:53:38.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-07T15:16:25.157Z","etag":null,"topics":["citygml","geodetic","python","wavefront-obj","wgs84"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oseiskar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-10-31T11:24:49.000Z","updated_at":"2021-11-01T07:53:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"9f23b8b9-209e-4c53-8bfe-01860f1066a0","html_url":"https://github.com/oseiskar/CityGMLTools","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oseiskar%2FCityGMLTools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oseiskar%2FCityGMLTools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oseiskar%2FCityGMLTools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oseiskar%2FCityGMLTools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oseiskar","download_url":"https://codeload.github.com/oseiskar/CityGMLTools/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246726180,"owners_count":20823751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["citygml","geodetic","python","wavefront-obj","wgs84"],"created_at":"2024-10-06T02:04:30.269Z","updated_at":"2025-04-01T23:24:37.679Z","avatar_url":"https://github.com/oseiskar.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CityGML conversion tools (Espoo)\n\nThe main purpose of this repository is allowing conversions of this 3D model data\nof the city of Espoo https://kartat.espoo.fi/3D/citymodel_en.html to a commonly\nunderstood 3D format and coordinate system, using Open Source tools.\n\nThe first implementation converts to Wafefront OBJ format, which can be viewed\nwith, e.g., this online tool: https://3dviewer.net/.\nThe result is in ENU coordinates defined at the given origin.\n\nThe code includes some hacks (like `--auto-fix-walls`) that may not be required with\nother CityGML datasets. Compatibility with other CityGML datasets is currently unknown.\nOn the other hand, other tools such as https://github.com/tudelft3d/CityGML2OBJs,\nwhich did not work with the Espoo dataset, may work with those.\n\n## Usage\n\n 1. Optional but recommended: virtualenv\n    * (once) Set up virtualenv: `python3 -m venv venv`\n    * (every time): Activate: `venv/bin/activate`\n 2. (once) Install: `pip install -r requirements.txt`\n\n## Coordinate helpers\n\nTo perform bounding box queries, you may need to convert coordinate systems between, WGS84\n(the \"satellite coordinates\" you get from, e.g., Google Maps) and local coordinate systems like EPSG:3879\n(that, e.g., move with the tectonic plates).\n\n    python coordinates.py --coordinateSystem=EPSG:3879 single from_wgs 60.1757 24.8040\n\nwhich should print something like `(6673664.363125221, 25489121.254538767)`.\n\n## Downloading\n\nList available datasets\n\n    python download.py --url=https://kartat.espoo.fi/teklaogcweb/wfs.ashx GetCapabilities\n\nLook at the `FeatureType/Name` fields in the result XML, something like `bldg:building_lod2`.\n\nDownload a particular dataset\n\n    mkdir -p data\n    python download.py --url=https://kartat.espoo.fi/teklaogcweb/wfs.ashx \\\n      GetFeature \"bldg:building_lod2\" \\\n      --coordinateSystem=EPSG:3879 --latitude=6673664 --longitude=25489121 --radius=200 \\\n      --maxFeatures=100 \u003e data/dataset.xml\n\nAfter checking that the data looks correct, try expanding the search radius `--radius` (in meters)\nor removing max feature limit (by setting `--maxFeatures=0`).\n\n## Conversions\n\nExample:\n\n    python convert.py to_obj 6673664 25489121 \\\n      --auto-fix-walls \\\n      --coordinateSystem=EPSG:3879 \u003c data/dataset.xml \u003e data/dataset.obj\n\nIf the imported area is large (several kilometers in diameter), consider also\nusing `--accurate-enu`, which should correctly handle the curvature of the Earth\nand other effects of similar magnitude, which are less accurately modeled in\nthe default mode, `--fast-enu`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foseiskar%2Fcitygmltools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foseiskar%2Fcitygmltools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foseiskar%2Fcitygmltools/lists"}