Skip to content

Instantly share code, notes, and snippets.

@jjclavijo
Last active November 11, 2021 19:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jjclavijo/46cf712424eb163a7e1798bc8c3cc4b6 to your computer and use it in GitHub Desktop.
Save jjclavijo/46cf712424eb163a7e1798bc8c3cc4b6 to your computer and use it in GitHub Desktop.
Bajar la Frontera Argentina con Overpass
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 5,
"metadata": {
"jupytext": {
"cell_metadata_filter": "-all",
"main_language": "python",
"notebook_metadata_filter": "-all"
},
"colab": {
"name": "Bajar la Frontera Argentina con Overpass",
"provenance": [],
"collapsed_sections": [],
"include_colab_link": true
},
"language_info": {
"name": "python"
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/jjclavijo/46cf712424eb163a7e1798bc8c3cc4b6/notebook.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "476e90dc"
},
"source": [
"_= !add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable\n",
"_= !apt-get update\n",
"_= !apt-get install libudunits2-dev libgdal-dev libgeos-dev libproj-dev \n",
"_= !apt-get install proj-bin\n",
"\n",
"_= !pip install geopandas"
],
"id": "476e90dc",
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "b1cc59a2"
},
"source": [
"import sys\n",
"from urllib.parse import urlparse,unquote_to_bytes,quote_from_bytes\n",
"import geopandas as gpd\n",
"\n",
"def view_query(url):\n",
" quoted = urlparse(url).query.split('=')[1]\n",
" print(unquote_to_bytes(quoted).decode())"
],
"id": "b1cc59a2",
"execution_count": 7,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "51fb8c0b"
},
"source": [
"# Primera consulta\n",
"\n",
"Buscamos tener la frontera argentina completa como poligono, nos \n",
"aprovechamos de que la relación correspondiente a argentina tiene \n",
"cargado su identificador en geonames [http://www.geonames.org/](http://www.geonames.org/) para construir una consulta que busque la relación con geonames:id=...\n",
"\n",
"[Link al objeto en geonames](http://www.geonames.org/3865483/argentine-republic.html)\n"
],
"id": "51fb8c0b"
},
{
"cell_type": "code",
"metadata": {
"id": "cca64231",
"outputId": "f0c4ec2b-71c9-41f3-cb23-62c4b0ebc7e2",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"view_query(\"https://overpass-api.de/api/interpreter?data=relation%5B%22geonames%3Aid%22%3D3865483%5D%3B%0Aout%20geom%3B\")\n",
"_= !curl -L -o argentina.op \"https://overpass-api.de/api/interpreter?data=relation%5B%22geonames%3Aid%22%3D3865483%5D%3B%0Aout%20geom%3B\""
],
"id": "cca64231",
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"relation[\"geonames:id\"=3865483];\n",
"out geom;\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8832076e"
},
"source": [
"# ¿Qué bajó?\n",
"\n",
"Podemos usar ogrinfo para ver qué nos dice ogr de lo que bajamos."
],
"id": "8832076e"
},
{
"cell_type": "code",
"metadata": {
"id": "c28d5f31",
"outputId": "9262c662-41b0-4357-e1dd-04bea42c0816",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"%%bash\n",
"ogrinfo -al -so argentina.op"
],
"id": "c28d5f31",
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"INFO: Open of `argentina.op'\n",
" using driver `OSM' successful.\n",
"\n",
"Layer name: points\n",
"Geometry: Point\n",
"Feature Count: -1\n",
"Extent: (-73.560537, -55.185076) - (-53.637451, -21.780857)\n",
"Layer SRS WKT:\n",
"GEOGCRS[\"WGS 84\",\n",
" DATUM[\"World Geodetic System 1984\",\n",
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n",
" LENGTHUNIT[\"metre\",1]]],\n",
" PRIMEM[\"Greenwich\",0,\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" CS[ellipsoidal,2],\n",
" AXIS[\"geodetic latitude (Lat)\",north,\n",
" ORDER[1],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" AXIS[\"geodetic longitude (Lon)\",east,\n",
" ORDER[2],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" ID[\"EPSG\",4326]]\n",
"Data axis to CRS axis mapping: 2,1\n",
"osm_id: String (0.0)\n",
"name: String (0.0)\n",
"barrier: String (0.0)\n",
"highway: String (0.0)\n",
"ref: String (0.0)\n",
"address: String (0.0)\n",
"is_in: String (0.0)\n",
"place: String (0.0)\n",
"man_made: String (0.0)\n",
"other_tags: String (0.0)\n",
"\n",
"Layer name: lines\n",
"Geometry: Line String\n",
"Feature Count: -1\n",
"Extent: (-73.560537, -55.185076) - (-53.637451, -21.780857)\n",
"Layer SRS WKT:\n",
"GEOGCRS[\"WGS 84\",\n",
" DATUM[\"World Geodetic System 1984\",\n",
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n",
" LENGTHUNIT[\"metre\",1]]],\n",
" PRIMEM[\"Greenwich\",0,\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" CS[ellipsoidal,2],\n",
" AXIS[\"geodetic latitude (Lat)\",north,\n",
" ORDER[1],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" AXIS[\"geodetic longitude (Lon)\",east,\n",
" ORDER[2],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" ID[\"EPSG\",4326]]\n",
"Data axis to CRS axis mapping: 2,1\n",
"osm_id: String (0.0)\n",
"name: String (0.0)\n",
"highway: String (0.0)\n",
"waterway: String (0.0)\n",
"aerialway: String (0.0)\n",
"barrier: String (0.0)\n",
"man_made: String (0.0)\n",
"z_order: Integer (0.0)\n",
"other_tags: String (0.0)\n",
"\n",
"Layer name: multilinestrings\n",
"Geometry: Multi Line String\n",
"Feature Count: -1\n",
"Extent: (-73.560537, -55.185076) - (-53.637451, -21.780857)\n",
"Layer SRS WKT:\n",
"GEOGCRS[\"WGS 84\",\n",
" DATUM[\"World Geodetic System 1984\",\n",
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n",
" LENGTHUNIT[\"metre\",1]]],\n",
" PRIMEM[\"Greenwich\",0,\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" CS[ellipsoidal,2],\n",
" AXIS[\"geodetic latitude (Lat)\",north,\n",
" ORDER[1],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" AXIS[\"geodetic longitude (Lon)\",east,\n",
" ORDER[2],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" ID[\"EPSG\",4326]]\n",
"Data axis to CRS axis mapping: 2,1\n",
"osm_id: String (0.0)\n",
"name: String (0.0)\n",
"type: String (0.0)\n",
"other_tags: String (0.0)\n",
"\n",
"Layer name: multipolygons\n",
"Geometry: Multi Polygon\n",
"Feature Count: -1\n",
"Extent: (-73.560537, -55.185076) - (-53.637451, -21.780857)\n",
"Layer SRS WKT:\n",
"GEOGCRS[\"WGS 84\",\n",
" DATUM[\"World Geodetic System 1984\",\n",
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n",
" LENGTHUNIT[\"metre\",1]]],\n",
" PRIMEM[\"Greenwich\",0,\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" CS[ellipsoidal,2],\n",
" AXIS[\"geodetic latitude (Lat)\",north,\n",
" ORDER[1],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" AXIS[\"geodetic longitude (Lon)\",east,\n",
" ORDER[2],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" ID[\"EPSG\",4326]]\n",
"Data axis to CRS axis mapping: 2,1\n",
"osm_id: String (0.0)\n",
"osm_way_id: String (0.0)\n",
"name: String (0.0)\n",
"type: String (0.0)\n",
"aeroway: String (0.0)\n",
"amenity: String (0.0)\n",
"admin_level: String (0.0)\n",
"barrier: String (0.0)\n",
"boundary: String (0.0)\n",
"building: String (0.0)\n",
"craft: String (0.0)\n",
"geological: String (0.0)\n",
"historic: String (0.0)\n",
"land_area: String (0.0)\n",
"landuse: String (0.0)\n",
"leisure: String (0.0)\n",
"man_made: String (0.0)\n",
"military: String (0.0)\n",
"natural: String (0.0)\n",
"office: String (0.0)\n",
"place: String (0.0)\n",
"shop: String (0.0)\n",
"sport: String (0.0)\n",
"tourism: String (0.0)\n",
"other_tags: String (0.0)\n",
"\n",
"Layer name: other_relations\n",
"Geometry: Geometry Collection\n",
"Feature Count: -1\n",
"Extent: (-73.560537, -55.185076) - (-53.637451, -21.780857)\n",
"Layer SRS WKT:\n",
"GEOGCRS[\"WGS 84\",\n",
" DATUM[\"World Geodetic System 1984\",\n",
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n",
" LENGTHUNIT[\"metre\",1]]],\n",
" PRIMEM[\"Greenwich\",0,\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" CS[ellipsoidal,2],\n",
" AXIS[\"geodetic latitude (Lat)\",north,\n",
" ORDER[1],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" AXIS[\"geodetic longitude (Lon)\",east,\n",
" ORDER[2],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" ID[\"EPSG\",4326]]\n",
"Data axis to CRS axis mapping: 2,1\n",
"osm_id: String (0.0)\n",
"name: String (0.0)\n",
"type: String (0.0)\n",
"other_tags: String (0.0)\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "241dcb82"
},
"source": [
"## Vemos que hay algo raro porque los layers tienen cuenta de elementos = -1\n",
"\n",
"Lo convertimos a geopackage para ver si carga algo."
],
"id": "241dcb82"
},
{
"cell_type": "code",
"metadata": {
"id": "2cfad324",
"outputId": "3821e276-159d-4243-c1e6-8ee7461ef824",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 69
}
},
"source": [
"!ogr2ogr -f gpkg argentina.gpkg argentina.op #-sql 'SELECT * FROM multipolygons'\n",
"\n",
"gpd.read_file('argentina.gpkg')#.plot()"
],
"id": "2cfad324",
"execution_count": 10,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0...10...20...30...40...50...60...70...80...90...100 - done.\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>osm_id</th>\n",
" <th>name</th>\n",
" <th>barrier</th>\n",
" <th>highway</th>\n",
" <th>ref</th>\n",
" <th>address</th>\n",
" <th>is_in</th>\n",
" <th>place</th>\n",
" <th>man_made</th>\n",
" <th>other_tags</th>\n",
" <th>geometry</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty GeoDataFrame\n",
"Columns: [osm_id, name, barrier, highway, ref, address, is_in, place, man_made, other_tags, geometry]\n",
"Index: []"
]
},
"metadata": {},
"execution_count": 10
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "d413b845"
},
"source": [
"Como podemos ver si abrimos el archivo descargado, no se bajó ninguna via ni\n",
"nodo, de manera que no hay geometrías para representar. por eso es razonable\n",
"que no se haya mostrado nada al convertirlo a gpkg.\n",
"\n",
"# Segunto intento: out geom"
],
"id": "d413b845"
},
{
"cell_type": "code",
"metadata": {
"id": "c4c54a27",
"outputId": "ab33c126-12bc-43d2-f5b5-7d7feea16871",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"view_query(\"https://overpass-api.de/api/interpreter?data=relation%5B%22geonames%3Aid%22%3D3865483%5D%3B%0Away%28r%3Aouter%29%3B%0Aout%20geom%3B\")\n",
"_= !curl -L -o argentina2.osm \"https://overpass-api.de/api/interpreter?data=relation%5B%22geonames%3Aid%22%3D3865483%5D%3B%0Away%28r%3Aouter%29%3B%0Aout%20geom%3B\""
],
"id": "c4c54a27",
"execution_count": 11,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"relation[\"geonames:id\"=3865483];\n",
"way(r:outer);\n",
"out geom;\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "89bd37de",
"outputId": "b0a0beb9-bf35-4d4f-bce4-dc1396f7e1d2",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"%%bash\n",
"ogrinfo -so -al argentina2.osm"
],
"id": "89bd37de",
"execution_count": 12,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"INFO: Open of `argentina2.osm'\n",
" using driver `OSM' successful.\n",
"\n",
"Layer name: points\n",
"Geometry: Point\n",
"Feature Count: -1\n",
"Extent: (-68.514866, -52.521249) - (-68.432614, -52.397567)\n",
"Layer SRS WKT:\n",
"GEOGCRS[\"WGS 84\",\n",
" DATUM[\"World Geodetic System 1984\",\n",
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n",
" LENGTHUNIT[\"metre\",1]]],\n",
" PRIMEM[\"Greenwich\",0,\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" CS[ellipsoidal,2],\n",
" AXIS[\"geodetic latitude (Lat)\",north,\n",
" ORDER[1],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" AXIS[\"geodetic longitude (Lon)\",east,\n",
" ORDER[2],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" ID[\"EPSG\",4326]]\n",
"Data axis to CRS axis mapping: 2,1\n",
"osm_id: String (0.0)\n",
"name: String (0.0)\n",
"barrier: String (0.0)\n",
"highway: String (0.0)\n",
"ref: String (0.0)\n",
"address: String (0.0)\n",
"is_in: String (0.0)\n",
"place: String (0.0)\n",
"man_made: String (0.0)\n",
"other_tags: String (0.0)\n",
"\n",
"Layer name: lines\n",
"Geometry: Line String\n",
"Feature Count: -1\n",
"Extent: (-68.514866, -52.521249) - (-68.432614, -52.397567)\n",
"Layer SRS WKT:\n",
"GEOGCRS[\"WGS 84\",\n",
" DATUM[\"World Geodetic System 1984\",\n",
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n",
" LENGTHUNIT[\"metre\",1]]],\n",
" PRIMEM[\"Greenwich\",0,\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" CS[ellipsoidal,2],\n",
" AXIS[\"geodetic latitude (Lat)\",north,\n",
" ORDER[1],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" AXIS[\"geodetic longitude (Lon)\",east,\n",
" ORDER[2],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" ID[\"EPSG\",4326]]\n",
"Data axis to CRS axis mapping: 2,1\n",
"osm_id: String (0.0)\n",
"name: String (0.0)\n",
"highway: String (0.0)\n",
"waterway: String (0.0)\n",
"aerialway: String (0.0)\n",
"barrier: String (0.0)\n",
"man_made: String (0.0)\n",
"z_order: Integer (0.0)\n",
"other_tags: String (0.0)\n",
"\n",
"Layer name: multilinestrings\n",
"Geometry: Multi Line String\n",
"Feature Count: -1\n",
"Extent: (-68.514866, -52.521249) - (-68.432614, -52.397567)\n",
"Layer SRS WKT:\n",
"GEOGCRS[\"WGS 84\",\n",
" DATUM[\"World Geodetic System 1984\",\n",
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n",
" LENGTHUNIT[\"metre\",1]]],\n",
" PRIMEM[\"Greenwich\",0,\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" CS[ellipsoidal,2],\n",
" AXIS[\"geodetic latitude (Lat)\",north,\n",
" ORDER[1],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" AXIS[\"geodetic longitude (Lon)\",east,\n",
" ORDER[2],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" ID[\"EPSG\",4326]]\n",
"Data axis to CRS axis mapping: 2,1\n",
"osm_id: String (0.0)\n",
"name: String (0.0)\n",
"type: String (0.0)\n",
"other_tags: String (0.0)\n",
"\n",
"Layer name: multipolygons\n",
"Geometry: Multi Polygon\n",
"Feature Count: -1\n",
"Extent: (-68.514866, -52.521249) - (-68.432614, -52.397567)\n",
"Layer SRS WKT:\n",
"GEOGCRS[\"WGS 84\",\n",
" DATUM[\"World Geodetic System 1984\",\n",
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n",
" LENGTHUNIT[\"metre\",1]]],\n",
" PRIMEM[\"Greenwich\",0,\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" CS[ellipsoidal,2],\n",
" AXIS[\"geodetic latitude (Lat)\",north,\n",
" ORDER[1],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" AXIS[\"geodetic longitude (Lon)\",east,\n",
" ORDER[2],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" ID[\"EPSG\",4326]]\n",
"Data axis to CRS axis mapping: 2,1\n",
"osm_id: String (0.0)\n",
"osm_way_id: String (0.0)\n",
"name: String (0.0)\n",
"type: String (0.0)\n",
"aeroway: String (0.0)\n",
"amenity: String (0.0)\n",
"admin_level: String (0.0)\n",
"barrier: String (0.0)\n",
"boundary: String (0.0)\n",
"building: String (0.0)\n",
"craft: String (0.0)\n",
"geological: String (0.0)\n",
"historic: String (0.0)\n",
"land_area: String (0.0)\n",
"landuse: String (0.0)\n",
"leisure: String (0.0)\n",
"man_made: String (0.0)\n",
"military: String (0.0)\n",
"natural: String (0.0)\n",
"office: String (0.0)\n",
"place: String (0.0)\n",
"shop: String (0.0)\n",
"sport: String (0.0)\n",
"tourism: String (0.0)\n",
"other_tags: String (0.0)\n",
"\n",
"Layer name: other_relations\n",
"Geometry: Geometry Collection\n",
"Feature Count: -1\n",
"Extent: (-68.514866, -52.521249) - (-68.432614, -52.397567)\n",
"Layer SRS WKT:\n",
"GEOGCRS[\"WGS 84\",\n",
" DATUM[\"World Geodetic System 1984\",\n",
" ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n",
" LENGTHUNIT[\"metre\",1]]],\n",
" PRIMEM[\"Greenwich\",0,\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" CS[ellipsoidal,2],\n",
" AXIS[\"geodetic latitude (Lat)\",north,\n",
" ORDER[1],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" AXIS[\"geodetic longitude (Lon)\",east,\n",
" ORDER[2],\n",
" ANGLEUNIT[\"degree\",0.0174532925199433]],\n",
" ID[\"EPSG\",4326]]\n",
"Data axis to CRS axis mapping: 2,1\n",
"osm_id: String (0.0)\n",
"name: String (0.0)\n",
"type: String (0.0)\n",
"other_tags: String (0.0)\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "I340DEp9ZEek"
},
"source": [
"En este caso podemos chequear que el archivo si tiene geometría, pero OGR no sabe interpretarla."
],
"id": "I340DEp9ZEek"
},
{
"cell_type": "code",
"metadata": {
"id": "VZ_tUQVOZJRK",
"outputId": "c53676e3-f6f5-4de5-930b-ee97f20db3e1",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"!head -n 50 argentina2.osm"
],
"id": "VZ_tUQVOZJRK",
"execution_count": 16,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",
"<osm version=\"0.6\" generator=\"Overpass API 0.7.57 93a4d346\">\n",
"<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>\n",
"<meta osm_base=\"2021-11-11T19:03:58Z\"/>\n",
"\n",
" <way id=\"10854053\">\n",
" <bounds minlat=\"-52.5212494\" minlon=\"-68.5148661\" maxlat=\"-52.3975670\" maxlon=\"-68.4326144\"/>\n",
" <nd ref=\"2153394951\" lat=\"-52.3975670\" lon=\"-68.4326144\"/>\n",
" <nd ref=\"4776101969\" lat=\"-52.4594522\" lon=\"-68.4737382\"/>\n",
" <nd ref=\"4216697415\" lat=\"-52.5212494\" lon=\"-68.5148661\"/>\n",
" <tag k=\"admin_level\" v=\"2\"/>\n",
" <tag k=\"border_type\" v=\"territorial\"/>\n",
" <tag k=\"boundary\" v=\"administrative\"/>\n",
" <tag k=\"description\" v=\"Línea recta que une el Hito Ex-Baliza Dungenes y el Hito I Cabo del Espíritu Santo.\"/>\n",
" <tag k=\"maritime\" v=\"yes\"/>\n",
" <tag k=\"source\" v=\"Tratado de Paz y Amistad entre Argentina y Chile de 1984\"/>\n",
" </way>\n",
" <way id=\"23616552\">\n",
" <bounds minlat=\"-26.2680969\" minlon=\"-54.6797939\" maxlat=\"-26.2544068\" maxlon=\"-54.6724941\"/>\n",
" <nd ref=\"96278448\" lat=\"-26.2544068\" lon=\"-54.6724941\"/>\n",
" <nd ref=\"2673406912\" lat=\"-26.2556755\" lon=\"-54.6740675\"/>\n",
" <nd ref=\"2673406914\" lat=\"-26.2567478\" lon=\"-54.6750282\"/>\n",
" <nd ref=\"255803059\" lat=\"-26.2586308\" lon=\"-54.6765040\"/>\n",
" <nd ref=\"5839748433\" lat=\"-26.2647252\" lon=\"-54.6795793\"/>\n",
" <nd ref=\"5839748432\" lat=\"-26.2665978\" lon=\"-54.6797939\"/>\n",
" <nd ref=\"2453674734\" lat=\"-26.2680969\" lon=\"-54.6796840\"/>\n",
" <tag k=\"admin_level\" v=\"2\"/>\n",
" <tag k=\"border_type\" v=\"nation\"/>\n",
" <tag k=\"boundary\" v=\"administrative\"/>\n",
" <tag k=\"left:country\" v=\"Argentina\"/>\n",
" <tag k=\"name\" v=\"Río Paraná\"/>\n",
" <tag k=\"name:he\" v=\"נהר פרנה\"/>\n",
" <tag k=\"right:country\" v=\"Paraguay\"/>\n",
" <tag k=\"source\" v=\"CIA World database II\"/>\n",
" <tag k=\"waterway\" v=\"river\"/>\n",
" <tag k=\"wdb:source\" v=\"CIA World database II - samer-bdy.txt - segment 123\"/>\n",
" </way>\n",
" <way id=\"23621856\">\n",
" <bounds minlat=\"-27.4681463\" minlon=\"-56.7210803\" maxlat=\"-27.4382206\" maxlon=\"-56.6164691\"/>\n",
" <nd ref=\"255834087\" lat=\"-27.4382206\" lon=\"-56.6164691\"/>\n",
" <nd ref=\"3841335437\" lat=\"-27.4424265\" lon=\"-56.6225614\"/>\n",
" <nd ref=\"3841335447\" lat=\"-27.4518211\" lon=\"-56.6370236\"/>\n",
" <nd ref=\"3841335454\" lat=\"-27.4554086\" lon=\"-56.6456926\"/>\n",
" <nd ref=\"1814959227\" lat=\"-27.4581644\" lon=\"-56.6470752\"/>\n",
" <nd ref=\"3841335461\" lat=\"-27.4599551\" lon=\"-56.6484568\"/>\n",
" <nd ref=\"3841335462\" lat=\"-27.4607396\" lon=\"-56.6495472\"/>\n",
" <nd ref=\"3506093200\" lat=\"-27.4617265\" lon=\"-56.6579825\"/>\n",
" <nd ref=\"3841335466\" lat=\"-27.4618724\" lon=\"-56.6638544\"/>\n",
" <nd ref=\"3841335464\" lat=\"-27.4611151\" lon=\"-56.6686818\"/>\n",
" <nd ref=\"3505918014\" lat=\"-27.4614490\" lon=\"-56.6726093\"/>\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "L7Gs7gTNcNqE"
},
"source": [
"# Tercer intento\n",
"\n",
"Bajaremos explicitamente las vias y nodos de la relación."
],
"id": "L7Gs7gTNcNqE"
},
{
"cell_type": "code",
"metadata": {
"id": "057d44cc",
"outputId": "a65e73e7-3153-4aa2-b9df-410a3b44d536",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 69
}
},
"source": [
"!ogr2ogr -f gpkg argentina2.gpkg argentina2.osm #-sql 'SELECT * FROM multipolygons'\n",
"\n",
"gpd.read_file('argentina2.gpkg')#.plot()"
],
"id": "057d44cc",
"execution_count": 14,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0...10...20...30...40...50...60...70...80...90...100 - done.\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>osm_id</th>\n",
" <th>name</th>\n",
" <th>barrier</th>\n",
" <th>highway</th>\n",
" <th>ref</th>\n",
" <th>address</th>\n",
" <th>is_in</th>\n",
" <th>place</th>\n",
" <th>man_made</th>\n",
" <th>other_tags</th>\n",
" <th>geometry</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty GeoDataFrame\n",
"Columns: [osm_id, name, barrier, highway, ref, address, is_in, place, man_made, other_tags, geometry]\n",
"Index: []"
]
},
"metadata": {},
"execution_count": 14
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "e7af245e",
"outputId": "ef264813-1284-4bce-cd3d-50247b214d84",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"view_query(\"https://overpass-api.de/api/interpreter?data=relation%5B%22geonames%3Aid%22%3D3865483%5D%3B%0Away%28r%3Aouter%29%3B%0Aout%20qt%3B%0Anode%28w%29%3B%0Aout%20skel%20qt%3B\")\n",
"_= !curl -L -o argentina3.osm \"https://overpass-api.de/api/interpreter?data=relation%5B%22geonames%3Aid%22%3D3865483%5D%3B%0Away%28r%3Aouter%29%3B%0Aout%20qt%3B%0Anode%28w%29%3B%0Aout%20skel%20qt%3B\""
],
"id": "e7af245e",
"execution_count": 46,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"relation[\"geonames:id\"=3865483];\n",
"way(r:outer);\n",
"out qt;\n",
"node(w);\n",
"out skel qt;\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "33ff075b",
"outputId": "345e3935-8a1b-4c5b-bc39-2b75d8020719",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 443
}
},
"source": [
"!ogr2ogr -f gpkg argentina3.gpkg argentina3.osm --config OSM_USE_CUSTOM_INDEXING NO\n",
"gpd.read_file('argentina3.gpkg')#.plot()"
],
"id": "33ff075b",
"execution_count": 43,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0...10...20...30...40...50...60...70...80...90...100 - done.\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>osm_id</th>\n",
" <th>name</th>\n",
" <th>highway</th>\n",
" <th>waterway</th>\n",
" <th>aerialway</th>\n",
" <th>barrier</th>\n",
" <th>man_made</th>\n",
" <th>z_order</th>\n",
" <th>other_tags</th>\n",
" <th>geometry</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>437261271</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>0</td>\n",
" <td>\"admin_level\"=&gt;\"2\",\"border_type\"=&gt;\"territorial...</td>\n",
" <td>LINESTRING (-64.00009 -55.05188, -63.92205 -55...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>363531474</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>0</td>\n",
" <td>\"admin_level\"=&gt;\"2\",\"boundary\"=&gt;\"administrative...</td>\n",
" <td>LINESTRING (-68.60935 -54.89365, -68.60967 -54...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>145812443</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>0</td>\n",
" <td>\"admin_level\"=&gt;\"2\",\"boundary\"=&gt;\"administrative\"</td>\n",
" <td>LINESTRING (-68.60247 -54.66215, -68.60235 -54...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>453441462</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>0</td>\n",
" <td>\"admin_level\"=&gt;\"2\",\"boundary\"=&gt;\"administrative\"</td>\n",
" <td>LINESTRING (-68.60702 -53.79988, -68.60715 -53...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>817928160</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>0</td>\n",
" <td>\"admin_level\"=&gt;\"2\",\"boundary\"=&gt;\"administrative\"</td>\n",
" <td>LINESTRING (-68.59631 -54.86082, -68.59642 -54...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>905</th>\n",
" <td>42840454</td>\n",
" <td>Rio Peperi-Guaçu</td>\n",
" <td>None</td>\n",
" <td>stream</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>0</td>\n",
" <td>\"admin_level\"=&gt;\"2\",\"alt_name\"=&gt;\"Rio Peperiguaç...</td>\n",
" <td>LINESTRING (-53.64412 -26.25242, -53.64412 -26...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>906</th>\n",
" <td>530860716</td>\n",
" <td>Rio Peperi-Guaçu</td>\n",
" <td>None</td>\n",
" <td>stream</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>-10</td>\n",
" <td>\"admin_level\"=&gt;\"2\",\"alt_name\"=&gt;\"Rio Peperiguaç...</td>\n",
" <td>LINESTRING (-53.64364 -26.25450, -53.64359 -26...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>907</th>\n",
" <td>530860722</td>\n",
" <td>Rio Peperi-Guaçu</td>\n",
" <td>None</td>\n",
" <td>stream</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>-10</td>\n",
" <td>\"admin_level\"=&gt;\"2\",\"alt_name\"=&gt;\"Rio Peperiguaç...</td>\n",
" <td>LINESTRING (-53.64407 -26.25223, -53.64412 -26...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>908</th>\n",
" <td>42840398</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>0</td>\n",
" <td>\"admin_level\"=&gt;\"2\",\"boundary\"=&gt;\"administrative\"</td>\n",
" <td>LINESTRING (-53.65212 -26.20640, -53.65313 -26...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>909</th>\n",
" <td>275281059</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>None</td>\n",
" <td>0</td>\n",
" <td>\"admin_level\"=&gt;\"2\",\"boundary\"=&gt;\"administrative\"</td>\n",
" <td>LINESTRING (-53.64241 -26.24356, -53.64235 -26...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>910 rows × 10 columns</p>\n",
"</div>"
],
"text/plain": [
" osm_id ... geometry\n",
"0 437261271 ... LINESTRING (-64.00009 -55.05188, -63.92205 -55...\n",
"1 363531474 ... LINESTRING (-68.60935 -54.89365, -68.60967 -54...\n",
"2 145812443 ... LINESTRING (-68.60247 -54.66215, -68.60235 -54...\n",
"3 453441462 ... LINESTRING (-68.60702 -53.79988, -68.60715 -53...\n",
"4 817928160 ... LINESTRING (-68.59631 -54.86082, -68.59642 -54...\n",
".. ... ... ...\n",
"905 42840454 ... LINESTRING (-53.64412 -26.25242, -53.64412 -26...\n",
"906 530860716 ... LINESTRING (-53.64364 -26.25450, -53.64359 -26...\n",
"907 530860722 ... LINESTRING (-53.64407 -26.25223, -53.64412 -26...\n",
"908 42840398 ... LINESTRING (-53.65212 -26.20640, -53.65313 -26...\n",
"909 275281059 ... LINESTRING (-53.64241 -26.24356, -53.64235 -26...\n",
"\n",
"[910 rows x 10 columns]"
]
},
"metadata": {},
"execution_count": 43
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1djdLHY5ZXAt"
},
"source": [
"\n",
"Vamos a ver que por fin aparecen geometrías, Pero sucede lo siguiente:\n",
"\n",
"La frontera de la parte continental está representada por múltiples tramos con la propiedad ```area=no```, mientras que las islas en los rios fronterizos están representadas por vias ```area=yes```. Por eso terminamos con una capa de lineas para la frontera continental y una capa de multipoligonos para las islas.\n",
"\n"
],
"id": "1djdLHY5ZXAt"
},
{
"cell_type": "code",
"metadata": {
"id": "e_V9U5baZqX3",
"outputId": "f3526451-da99-490e-a74d-fcf1a83b280b",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"! ogrinfo argentina3.gpkg -so -al | grep -E '(Layer name|Count)'"
],
"id": "e_V9U5baZqX3",
"execution_count": 44,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Layer name: lines\n",
"Feature Count: 910\n",
"Layer name: multipolygons\n",
"Feature Count: 87\n",
"Layer name: points\n",
"Feature Count: 0\n",
"Layer name: multilinestrings\n",
"Feature Count: 0\n",
"Layer name: other_relations\n",
"Feature Count: 0\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "sKSmhajdZk4I",
"outputId": "79dbb9ef-9f34-4130-982c-91c5ab43af93",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 459
}
},
"source": [
"gpd.read_file('argentina3.gpkg',layer='lines').plot()\n",
"gpd.read_file('argentina3.gpkg',layer='multipolygons').plot()"
],
"id": "sKSmhajdZk4I",
"execution_count": 45,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f04494dfad0>"
]
},
"metadata": {},
"execution_count": 45
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "d-m2eRnraQA3"
},
"source": [
"# Otra forma de obtener la geometría es la sugerida por turbo-overpass\n",
"\n",
"Utilizar el operador union (), y el operador de recursión >, para unir la relacion ```._;``` con sus elementos hijos ```>;```\n",
"\n",
"Esta versión de la consulta nos genera una capa separada para los puntos, pero nos genera correctamente el polígono correspontiente a la relación completa.\n"
],
"id": "d-m2eRnraQA3"
},
{
"cell_type": "code",
"metadata": {
"id": "5989ded5",
"outputId": "370aefc2-a77c-4607-c265-1fea9aa8dfcb",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"view_query(\"https://overpass-api.de/api/interpreter?data=relation%5B%22geonames%3Aid%22%3D3865483%5D%3B%0A%28._%3B%3E%3B%29%3B%0Aout%20qt%3B%0A\")\n",
"_= !curl -L -o argentina5.osm \"https://overpass-api.de/api/interpreter?data=relation%5B%22geonames%3Aid%22%3D3865483%5D%3B%0A%28._%3B%3E%3B%29%3B%0Aout%20qt%3B%0A\""
],
"id": "5989ded5",
"execution_count": 47,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"relation[\"geonames:id\"=3865483];\n",
"(._;>;);\n",
"out qt;\n",
"\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"lines_to_next_cell": 0,
"id": "524c53a8"
},
"source": [
"_= !ogr2ogr -f gpkg argentina5.gpkg argentina5.osm --config OSM_USE_CUSTOM_INDEXING NO -skipfailures\n"
],
"id": "524c53a8",
"execution_count": 48,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "3UIKvnGKaA8d",
"outputId": "3ac3fe4d-a8a9-410e-c255-6a19ba06e573",
"colab": {
"base_uri": "https://localhost:8080/"
}
},
"source": [
"! ogrinfo argentina5.gpkg -so -al | grep -E '(Layer name|Count)'"
],
"id": "3UIKvnGKaA8d",
"execution_count": 49,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Layer name: points\n",
"Feature Count: 1272\n",
"Layer name: lines\n",
"Feature Count: 913\n",
"Layer name: multilinestrings\n",
"Feature Count: 0\n",
"Layer name: multipolygons\n",
"Feature Count: 12\n",
"Layer name: other_relations\n",
"Feature Count: 0\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "MAOq-yjQaZjj",
"outputId": "ee97a899-f650-4901-c1d9-341947456007",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 780
}
},
"source": [
"gpd.read_file('argentina5.gpkg',layer='points').plot()\n",
"gpd.read_file('argentina5.gpkg',layer='lines').plot()\n",
"gpd.read_file('argentina5.gpkg',layer='multipolygons').plot()"
],
"id": "MAOq-yjQaZjj",
"execution_count": 50,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f044940d250>"
]
},
"metadata": {},
"execution_count": 50
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
}
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1f674b43"
},
"source": [
"# YAPA: usar la frontera para cortar un archivo planet.\n",
"\n",
"Esta parte del ejemplo no es interactiva, pero pueden probar bajarse un archivo planet y el programa ogr2poly, y luego pueden convertir el poligono de argentina al formato que osmosis u osmium comprenden, y realizar el estracto con algo similar a lo que aparece abajo.\n",
"\n",
"```raw\n",
"#!/bin/bash\n",
"\n",
"# Para convertir en poligono de osm: https://github.com/smellman/ogr2poly.git\n",
"\n",
"python ogr2poly/ogr2poly.py argentina5.gpkg multipolygons > bound.poly\n",
"\n",
"#osmosis --read-pbf file=\"planet-211011.osm.pbf\" --bounding-polygon file=\"bound.poly\" --write-xml file=\"argentina.osm\"\n",
"osmium -F pbf -f osm -o argentina_extract_osmium.osm -b \"bound.poly\" planet-211011.osm.pbf \n",
"```"
],
"id": "1f674b43"
},
{
"cell_type": "code",
"metadata": {
"id": "XZS7Ijywd5SD"
},
"source": [
""
],
"id": "XZS7Ijywd5SD",
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment