2023-08-31 16:57:32 +00:00
|
|
|
{
|
|
|
|
"cells": [
|
|
|
|
{
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"metadata": {},
|
|
|
|
"source": [
|
2023-09-01 13:35:30 +00:00
|
|
|
"# surplus 2.0.0 playground notebook\n",
|
|
|
|
"\n",
|
|
|
|
"wrangling with environments for devbox users using codium/vs code:\n",
|
|
|
|
"\n",
|
|
|
|
"```text\n",
|
|
|
|
"$ devbox shell # enter devbox env\n",
|
|
|
|
"(surplus-py3.11) (devbox) $ exit # leave poetry env\n",
|
|
|
|
"(devbox) $ codium . # open ide\n",
|
|
|
|
"```"
|
2023-08-31 16:57:32 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2023-09-01 13:35:30 +00:00
|
|
|
"execution_count": 1,
|
2023-08-31 16:57:32 +00:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"OUTPUT_LINE_X_KEYS: Final[tuple[str, ...]] = (\"region\",\"county\",\"state\",\"state_district\",\"country\",\"continent\",)\n"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"# converting nominatim keys to OUTPUT_LINE_X_KEYS format\n",
|
|
|
|
"\n",
|
|
|
|
"keys = \"\"\"\n",
|
|
|
|
"region, county, state, state_district, country, continent\n",
|
|
|
|
"\"\"\"\n",
|
|
|
|
"\n",
|
|
|
|
"split_keys = [f'\"{key.strip()}\"' for key in keys.strip().split(\",\")]\n",
|
|
|
|
"\n",
|
|
|
|
"print(f\"OUTPUT_LINE_X_KEYS: Final[tuple[str, ...]] = ({','.join(split_keys)},)\")"
|
|
|
|
]
|
2023-08-31 20:35:50 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2023-09-02 13:42:21 +00:00
|
|
|
"execution_count": 1,
|
2023-08-31 20:35:50 +00:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"from surplus import PlusCodeQuery, LocalCodeQuery, LatlongQuery, StringQuery\n",
|
2023-09-01 07:50:17 +00:00
|
|
|
"from surplus import Latlong, Result\n",
|
|
|
|
"from surplus import default_geocoder, default_reverser"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"metadata": {},
|
|
|
|
"source": [
|
|
|
|
"## Generic Result NamedTuple"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2023-09-02 13:42:21 +00:00
|
|
|
"execution_count": 2,
|
2023-09-01 07:50:17 +00:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
2023-09-01 13:35:30 +00:00
|
|
|
"True\tNone \t3\n",
|
|
|
|
"False\tZeroDivisionError('division by zero') \tdivision by zero (ZeroDivisionError)\n"
|
2023-09-01 07:50:17 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
2023-09-01 13:35:30 +00:00
|
|
|
"ename": "ZeroDivisionError",
|
|
|
|
"evalue": "division by zero",
|
2023-09-01 07:50:17 +00:00
|
|
|
"output_type": "error",
|
|
|
|
"traceback": [
|
|
|
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
2023-09-01 13:35:30 +00:00
|
|
|
"\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)",
|
2023-09-02 13:42:21 +00:00
|
|
|
"\u001b[1;32m/home/m/works/surplus/playground.ipynb Cell 5\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[1;32m <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=7'>8</a>\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m\\t\u001b[39;00m\u001b[39m{:<40}\u001b[39;00m\u001b[39m\\t\u001b[39;00m\u001b[39m{}\u001b[39;00m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(\u001b[39mbool\u001b[39m(nom_result), \u001b[39mrepr\u001b[39m(nom_result\u001b[39m.\u001b[39merror), nom_result\u001b[39m.\u001b[39mget()))\n\u001b[1;32m <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=8'>9</a>\u001b[0m \u001b[39mprint\u001b[39m(\n\u001b[1;32m <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=9'>10</a>\u001b[0m \u001b[39m\"\u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m\\t\u001b[39;00m\u001b[39m{:<40}\u001b[39;00m\u001b[39m\\t\u001b[39;00m\u001b[39m{}\u001b[39;00m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(\n\u001b[1;32m <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=10'>11</a>\u001b[0m \u001b[39mbool\u001b[39m(exc_result), \u001b[39mrepr\u001b[39m(exc_result\u001b[39m.\u001b[39merror), exc_result\u001b[39m.\u001b[39mcry(string\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m)\n\u001b[1;32m <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=11'>12</a>\u001b[0m )\n\u001b[1;32m <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=12'>13</a>\u001b[0m )\n\u001b[0;32m---> <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=13'>14</a>\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39m\"\u001b[39m\u001b[39m{}\u001b[39;00m\u001b[39m\\t\u001b[39;00m\u001b[39m{:<40}\u001b[39;00m\u001b[39m\\t\u001b[39;00m\u001b[39m{}\u001b[39;00m\u001b[39m\"\u001b[39m\u001b[39m.\u001b[39mformat(\u001b[39mbool\u001b[39m(exc_result), \u001b[39mrepr\u001b[39m(exc_result\u001b[39m.\u001b[39merror), exc_result\u001b[39m.\u001b[39;49mget()))\n",
|
|
|
|
"File \u001b[0;32m~/works/surplus/surplus.py:247\u001b[0m, in \u001b[0;36mResult.get\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 245\u001b[0m \u001b[39m\"\"\"method that returns self.value if Result is non-erroneous else raises error\"\"\"\u001b[39;00m\n\u001b[1;32m 246\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39misinstance\u001b[39m(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39merror, \u001b[39mBaseException\u001b[39;00m):\n\u001b[0;32m--> 247\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39merror\n\u001b[1;32m 248\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mvalue\n",
|
|
|
|
"\u001b[1;32m/home/m/works/surplus/playground.ipynb Cell 5\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[1;32m <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=0'>1</a>\u001b[0m nom_result \u001b[39m=\u001b[39m Result[\u001b[39mint\u001b[39m](\u001b[39m3\u001b[39m)\n\u001b[1;32m <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=2'>3</a>\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m----> <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=3'>4</a>\u001b[0m \u001b[39m1\u001b[39;49m \u001b[39m/\u001b[39;49m \u001b[39m0\u001b[39;49m\n\u001b[1;32m <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=4'>5</a>\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mException\u001b[39;00m \u001b[39mas\u001b[39;00m exc:\n\u001b[1;32m <a href='vscode-notebook-cell://wsl%2Balpine/home/m/works/surplus/playground.ipynb#W4sdnNjb2RlLXJlbW90ZQ%3D%3D?line=5'>6</a>\u001b[0m exc_result \u001b[39m=\u001b[39m Result[\u001b[39mint\u001b[39m](\u001b[39m-\u001b[39m\u001b[39m1\u001b[39m, error\u001b[39m=\u001b[39mexc)\n",
|
2023-09-01 13:35:30 +00:00
|
|
|
"\u001b[0;31mZeroDivisionError\u001b[0m: division by zero"
|
2023-09-01 07:50:17 +00:00
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"nom_result = Result[int](3)\n",
|
|
|
|
"\n",
|
2023-09-01 13:35:30 +00:00
|
|
|
"try:\n",
|
|
|
|
" 1 / 0\n",
|
|
|
|
"except Exception as exc:\n",
|
|
|
|
" exc_result = Result[int](-1, error=exc)\n",
|
|
|
|
"\n",
|
|
|
|
"print(\"{}\\t{:<40}\\t{}\".format(bool(nom_result), repr(nom_result.error), nom_result.get()))\n",
|
|
|
|
"print(\n",
|
|
|
|
" \"{}\\t{:<40}\\t{}\".format(\n",
|
|
|
|
" bool(exc_result), repr(exc_result.error), exc_result.cry(string=True)\n",
|
|
|
|
" )\n",
|
|
|
|
")\n",
|
|
|
|
"print(\"{}\\t{:<40}\\t{}\".format(bool(exc_result), repr(exc_result.error), exc_result.get()))"
|
2023-09-01 07:50:17 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"metadata": {},
|
|
|
|
"source": [
|
|
|
|
"## Query Types"
|
2023-08-31 20:35:50 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2023-09-02 09:35:33 +00:00
|
|
|
"execution_count": 3,
|
2023-08-31 20:35:50 +00:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Result(value=Latlong(latitude=1.3336875, longitude=103.7746875), error=None)"
|
|
|
|
]
|
|
|
|
},
|
2023-09-02 09:35:33 +00:00
|
|
|
"execution_count": 3,
|
2023-08-31 20:35:50 +00:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"PlusCodeQuery(code=\"6PH58QMF+FV\").to_lat_long_coord(geocoder=default_geocoder)"
|
|
|
|
]
|
|
|
|
},
|
2023-08-31 20:50:46 +00:00
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2023-09-02 09:35:33 +00:00
|
|
|
"execution_count": 4,
|
2023-08-31 20:50:46 +00:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Result(value=Latlong(latitude=1.3336875, longitude=103.7746875), error=None)"
|
|
|
|
]
|
|
|
|
},
|
2023-09-02 09:35:33 +00:00
|
|
|
"execution_count": 4,
|
2023-08-31 20:50:46 +00:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"plus_code = LocalCodeQuery(code=\"8QMF+FV\", locality=\"Singapore\").to_full_plus_code(\n",
|
|
|
|
" geocoder=default_geocoder\n",
|
|
|
|
")\n",
|
|
|
|
"\n",
|
|
|
|
"PlusCodeQuery(code=plus_code.get()).to_lat_long_coord(geocoder=default_geocoder)"
|
|
|
|
]
|
|
|
|
},
|
2023-08-31 20:35:50 +00:00
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2023-09-02 09:35:33 +00:00
|
|
|
"execution_count": 5,
|
2023-08-31 20:35:50 +00:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Result(value=Latlong(latitude=1.3336875, longitude=103.7746875), error=None)"
|
|
|
|
]
|
|
|
|
},
|
2023-09-02 09:35:33 +00:00
|
|
|
"execution_count": 5,
|
2023-08-31 20:35:50 +00:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"LocalCodeQuery(code=\"8QMF+FV\", locality=\"Singapore\").to_lat_long_coord(\n",
|
|
|
|
" geocoder=default_geocoder\n",
|
|
|
|
")"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2023-09-02 09:35:33 +00:00
|
|
|
"execution_count": 6,
|
2023-08-31 20:35:50 +00:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Result(value=Latlong(latitude=1.33318835, longitude=103.77461234638255), error=None)"
|
|
|
|
]
|
|
|
|
},
|
2023-09-02 09:35:33 +00:00
|
|
|
"execution_count": 6,
|
2023-08-31 20:35:50 +00:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"LatlongQuery(\n",
|
|
|
|
" latlong=Latlong(latitude=1.33318835, longitude=103.77461234638255)\n",
|
|
|
|
").to_lat_long_coord(geocoder=default_geocoder)"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
2023-09-02 09:35:33 +00:00
|
|
|
"execution_count": 7,
|
2023-08-31 20:35:50 +00:00
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"text/plain": [
|
|
|
|
"Result(value=Latlong(latitude=1.33318835, longitude=103.77461234638255), error=None)"
|
|
|
|
]
|
|
|
|
},
|
2023-09-02 09:35:33 +00:00
|
|
|
"execution_count": 7,
|
2023-08-31 20:35:50 +00:00
|
|
|
"metadata": {},
|
|
|
|
"output_type": "execute_result"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"StringQuery(query=\"Ngee Ann Polytechnic\").to_lat_long_coord(geocoder=default_geocoder)"
|
|
|
|
]
|
2023-09-02 06:22:51 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"metadata": {},
|
|
|
|
"source": [
|
2023-09-02 09:35:33 +00:00
|
|
|
"## return dictionary of `reverser` function\n",
|
|
|
|
"\n",
|
|
|
|
"all the necessary keys (see `SHAREABLE_TEXT_LINE_*` constants) should be at the top-level of the dictionary.\n",
|
|
|
|
"these keys will be casted into strings for safety guarantee when shareable text lines are being generated.\n",
|
|
|
|
"\n",
|
|
|
|
"while not necessary, consider keeping the original response dict under the \"raw\" key.\n",
|
|
|
|
"helps with debugging using `-d/--debug`!"
|
2023-09-02 06:22:51 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": null,
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
2023-09-02 09:35:33 +00:00
|
|
|
"reverser_return = {\n",
|
|
|
|
" \"amenity\": \"Ngee Ann Polytechnic\",\n",
|
|
|
|
" \"house_number\": \"535\",\n",
|
|
|
|
" \"road\": \"Clementi Road\",\n",
|
|
|
|
" \"suburb\": \"Bukit Timah\",\n",
|
|
|
|
" \"city\": \"Singapore\",\n",
|
|
|
|
" \"county\": \"Northwest\",\n",
|
|
|
|
" \"ISO3166-2-lvl6\": \"SG-03\",\n",
|
|
|
|
" \"postcode\": \"599489\",\n",
|
|
|
|
" \"country\": \"Singapore\",\n",
|
|
|
|
" \"country_code\": \"sg\",\n",
|
|
|
|
" \"raw\": {\n",
|
|
|
|
" \"place_id\": 297946059,\n",
|
|
|
|
" \"licence\": \"Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright\",\n",
|
|
|
|
" \"osm_type\": \"relation\",\n",
|
|
|
|
" \"osm_id\": 2535118,\n",
|
|
|
|
" \"lat\": \"1.33318835\",\n",
|
|
|
|
" \"lon\": \"103.77461234638255\",\n",
|
|
|
|
" \"class\": \"amenity\",\n",
|
|
|
|
" \"type\": \"university\",\n",
|
|
|
|
" \"place_rank\": 30,\n",
|
|
|
|
" \"importance\": 0.34662169301918117,\n",
|
|
|
|
" \"addresstype\": \"amenity\",\n",
|
|
|
|
" \"name\": \"Ngee Ann Polytechnic\",\n",
|
|
|
|
" \"display_name\": \"Ngee Ann Polytechnic, 535, Clementi Road, Bukit Timah, Singapore, Northwest, 599489, Singapore\",\n",
|
|
|
|
" \"address\": {\n",
|
|
|
|
" \"amenity\": \"Ngee Ann Polytechnic\",\n",
|
|
|
|
" \"house_number\": \"535\",\n",
|
|
|
|
" \"road\": \"Clementi Road\",\n",
|
|
|
|
" \"suburb\": \"Bukit Timah\",\n",
|
|
|
|
" \"city\": \"Singapore\",\n",
|
|
|
|
" \"county\": \"Northwest\",\n",
|
|
|
|
" \"ISO3166-2-lvl6\": \"SG-03\",\n",
|
|
|
|
" \"postcode\": \"599489\",\n",
|
|
|
|
" \"country\": \"Singapore\",\n",
|
|
|
|
" \"country_code\": \"sg\",\n",
|
|
|
|
" },\n",
|
|
|
|
" \"boundingbox\": [\"1.3289692\", \"1.3372184\", \"103.7701481\", \"103.7783945\"],\n",
|
|
|
|
" },\n",
|
|
|
|
" \"latitude\": 1.33318835,\n",
|
|
|
|
" \"longitude\": 103.77461234638255,\n",
|
2023-09-02 06:22:51 +00:00
|
|
|
"}"
|
|
|
|
]
|
2023-09-02 09:35:33 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 7,
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"{'ISO3166-2-lvl6': 'SG-03',\n",
|
|
|
|
" 'amenity': 'Ngee Ann Polytechnic',\n",
|
|
|
|
" 'city': 'Singapore',\n",
|
|
|
|
" 'country': 'Singapore',\n",
|
|
|
|
" 'country_code': 'sg',\n",
|
|
|
|
" 'county': 'Northwest',\n",
|
|
|
|
" 'house_number': '535',\n",
|
|
|
|
" 'latitude': 1.33318835,\n",
|
|
|
|
" 'longitude': 103.77461234638255,\n",
|
|
|
|
" 'postcode': '599489',\n",
|
|
|
|
" 'raw': {'address': {'ISO3166-2-lvl6': 'SG-03',\n",
|
|
|
|
" 'amenity': 'Ngee Ann Polytechnic',\n",
|
|
|
|
" 'city': 'Singapore',\n",
|
|
|
|
" 'country': 'Singapore',\n",
|
|
|
|
" 'country_code': 'sg',\n",
|
|
|
|
" 'county': 'Northwest',\n",
|
|
|
|
" 'house_number': '535',\n",
|
|
|
|
" 'postcode': '599489',\n",
|
|
|
|
" 'road': 'Clementi Road',\n",
|
|
|
|
" 'suburb': 'Bukit Timah'},\n",
|
|
|
|
" 'addresstype': 'amenity',\n",
|
|
|
|
" 'boundingbox': ['1.3289692',\n",
|
|
|
|
" '1.3372184',\n",
|
|
|
|
" '103.7701481',\n",
|
|
|
|
" '103.7783945'],\n",
|
|
|
|
" 'class': 'amenity',\n",
|
|
|
|
" 'display_name': 'Ngee Ann Polytechnic, 535, Clementi Road, Bukit '\n",
|
|
|
|
" 'Timah, Singapore, Northwest, 599489, Singapore',\n",
|
|
|
|
" 'importance': 0.34662169301918117,\n",
|
|
|
|
" 'lat': '1.33318835',\n",
|
|
|
|
" 'licence': 'Data © OpenStreetMap contributors, ODbL 1.0. '\n",
|
|
|
|
" 'http://osm.org/copyright',\n",
|
|
|
|
" 'lon': '103.77461234638255',\n",
|
|
|
|
" 'name': 'Ngee Ann Polytechnic',\n",
|
|
|
|
" 'osm_id': 2535118,\n",
|
|
|
|
" 'osm_type': 'relation',\n",
|
|
|
|
" 'place_id': 297946059,\n",
|
|
|
|
" 'place_rank': 30,\n",
|
|
|
|
" 'type': 'university'},\n",
|
|
|
|
" 'road': 'Clementi Road',\n",
|
|
|
|
" 'suburb': 'Bukit Timah'}\n"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"import pprint\n",
|
|
|
|
"\n",
|
|
|
|
"latlong = LocalCodeQuery(code=\"8QMF+FV\", locality=\"Singapore\").to_lat_long_coord(\n",
|
|
|
|
" default_geocoder\n",
|
|
|
|
")\n",
|
|
|
|
"if not latlong:\n",
|
|
|
|
" latlong.cry()\n",
|
|
|
|
"\n",
|
|
|
|
"else:\n",
|
|
|
|
" location = default_reverser(latlong.get())\n",
|
|
|
|
" pprint.pprint(location)"
|
|
|
|
]
|
2023-08-31 16:57:32 +00:00
|
|
|
}
|
|
|
|
],
|
|
|
|
"metadata": {
|
|
|
|
"kernelspec": {
|
|
|
|
"display_name": "Python 3",
|
|
|
|
"language": "python",
|
|
|
|
"name": "python3"
|
|
|
|
},
|
|
|
|
"language_info": {
|
|
|
|
"codemirror_mode": {
|
|
|
|
"name": "ipython",
|
|
|
|
"version": 3
|
|
|
|
},
|
|
|
|
"file_extension": ".py",
|
|
|
|
"mimetype": "text/x-python",
|
|
|
|
"name": "python",
|
|
|
|
"nbconvert_exporter": "python",
|
|
|
|
"pygments_lexer": "ipython3",
|
2023-09-01 07:50:17 +00:00
|
|
|
"version": "3.11.1"
|
2023-08-31 16:57:32 +00:00
|
|
|
},
|
|
|
|
"orig_nbformat": 4
|
|
|
|
},
|
|
|
|
"nbformat": 4,
|
|
|
|
"nbformat_minor": 2
|
|
|
|
}
|