{ "cells": [ { "cell_type": "markdown", "id": "25eec9a6", "metadata": {}, "source": [ "# Extract wildlife observation data with SensingClues\n", "\n", "[SensingClues](https://sensingclues.org/) allows you to record, monitor and analyze wildlife observations to support nature conservation initiatives. This notebook shows the following:\n", "\n", "- **Basic**: the main SensingClues-functionality of **extracting observation and track data**. \n", "- **Advanced**: this section includes the usage of a hierarchy of available concepts (e.g. animal species or type of activity), which enhances reporting and analysis of the observation data. Further, we show how to collect and visualize layer data from SensingClues.\n", "\n", "You can adapt this notebook to extract your own recordings. For more detail on what you can configure as a user, see the API-documentation of the `sensingclues`-package.\n", "\n", "### Before you start\n", "\n", "To run this notebook, you should:\n", "- create a personal account at SensingClues using the Cluey Data Collector app, which can be downloaded from the Google Playstore (not supported for iOS currently). Also see [here](https://sensingclues.org/portal).\n", "- install the `sensingclues`-package in a virtual python environment (`pip install -e .` from the main directory of the repository).\n", "- install the requirements in requirements.txt (if not already installed automatically in the previous step).\n", "- create a file '.env' in the root of the wildcat-api-python-repository, containing your SensingClues credentials. These will be read in this notebook to log in. The file should look like this:\n", "```\n", "# SensingClues credentials\n", "USERNAME=your_username\n", "PASSWORD=your_password\n", "```" ] }, { "cell_type": "markdown", "id": "d59d421f", "metadata": {}, "source": [ "## Configuration" ] }, { "cell_type": "code", "execution_count": 1, "id": "a3cbba90", "metadata": {}, "outputs": [], "source": [ "import os" ] }, { "cell_type": "code", "execution_count": 2, "id": "72108565", "metadata": {}, "outputs": [], "source": [ "from dotenv import load_dotenv" ] }, { "cell_type": "code", "execution_count": 3, "id": "aeb8457f", "metadata": {}, "outputs": [], "source": [ "from sensingclues import sclogging\n", "from sensingclues.api_calls import SensingClues\n", "from sensingclues.src import helper_functions as helpers" ] }, { "cell_type": "code", "execution_count": 4, "id": "f1df6b06", "metadata": {}, "outputs": [], "source": [ "logger = sclogging.get_sc_logger()\n", "sclogging.set_sc_log_level(\"DEBUG\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "cb402416", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "load_dotenv()" ] }, { "cell_type": "code", "execution_count": 6, "id": "f8bf00b1", "metadata": {}, "outputs": [], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 7, "id": "a4b7dcc9", "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "# N.B. you can place your credentials here as well, but this is not recommended.\n", "username = os.getenv(\"USERNAME\")\n", "password = os.getenv(\"PASSWORD\")" ] }, { "cell_type": "markdown", "id": "63d1a316", "metadata": {}, "source": [ "## Connect to SensingClues" ] }, { "cell_type": "code", "execution_count": 8, "id": "7e4940b0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2024-05-29 10:24:17 [api_calls.py:54] INFO - Successfully logged in to SensingClues.\n" ] } ], "source": [ "sensing_clues = SensingClues(username, password)" ] }, { "cell_type": "code", "execution_count": 9, "id": "b194c006", "metadata": {}, "outputs": [], "source": [ "# you should have logged in automatically by calling the class.\n", "# if not, you can call the login-method separately.\n", "# status = sensing_clues.login(username, password)" ] }, { "cell_type": "code", "execution_count": 10, "id": "31ae1468", "metadata": {}, "outputs": [], "source": [ "# It is not necessary to log out, but you can do so by calling:\n", "# sensing_clues.logout()" ] }, { "cell_type": "markdown", "id": "2f12c24a", "metadata": {}, "source": [ "## Check available data\n", "\n", "By default, you have access to several groups of data, such as a demo dataset and a large dataset offered by [Global Forest Watch](https://www.globalforestwatch.org)." ] }, { "cell_type": "code", "execution_count": 11, "id": "69397125", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namedescriptionn_records
0focus-project-24358003june2020405
1focus-project-7136973Cluey Data Collector688
2focus-project-7811010Creekish mountains157
3focus-project-1234Demo Upload1848
4focus-project-GFWGFW49468
\n", "
" ], "text/plain": [ " name description n_records\n", "0 focus-project-2435800 3june2020 405\n", "1 focus-project-7136973 Cluey Data Collector 688\n", "2 focus-project-7811010 Creekish mountains 157\n", "3 focus-project-1234 Demo Upload 1848\n", "4 focus-project-GFW GFW 49468" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "info = sensing_clues.get_groups()\n", "info" ] }, { "cell_type": "code", "execution_count": 12, "id": "9b5921ce", "metadata": {}, "outputs": [], "source": [ "# specify the group(s) to extract data from\n", "groups = [\n", " \"focus-project-1234\",\n", "]" ] }, { "cell_type": "markdown", "id": "0b575d9e", "metadata": {}, "source": [ "## Basic functionality\n", "\n", "- Get observation data\n", "- Get track data" ] }, { "cell_type": "markdown", "id": "bfa69c3d", "metadata": {}, "source": [ "### Get observations\n", "\n", "You can filter the extracted observations in multiple ways, such as data, coordinates (bounding box) and concepts. For full detail on the options, see the documentation of the API. Some key features are shown here:\n", "\n", "- **Date and time**: set `date_from` and/or `date_until` (in format %Y-%m-%d, assumes UTC).\n", "- **Coordinates**: set `coord`, e.g. {\"north\": 32, \"east\": 20, \"south\": 31, \"west\": 17}.\n", "- **Concepts**: set `concepts` to include, e.g. 'animal'. *See example shown later in this notebook*.\n", "\n", "#### Notes\n", "- Each observation has a unique `entityId` and may have multiple concepts (labels) associated with it,\n", " in which case the number of records in the observations-dataframe is larger than\n", " the number of observations mentioned by the logger.\n", "- Reading all data in a group can take minutes or longer, depending on the size of the dataset. If you want to do a quick test, you can limit the number of pages to read by setting `page_nbr_sample`. " ] }, { "cell_type": "code", "execution_count": 13, "id": "25075ed6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2024-05-29 10:24:18 [api_calls.py:458] INFO - Scope '['focus-project-1234']' contains 1848 entities for data type 'observations'.\n", "2024-05-29 10:24:18 [api_calls.py:465] INFO - Restricting number of pages to a sample of 2.\n", "2024-05-29 10:24:18 [api_calls.py:478] INFO - Started reading available records.\n", "2024-05-29 10:24:18 [api_calls.py:481] INFO - Reading page 0 out of 2 pages.\n", "2024-05-29 10:24:19 [api_calls.py:493] INFO - Finished reading available records.\n" ] } ], "source": [ "# a quick test can be done like so\n", "obs_sample = sensing_clues.get_observations(groups=groups, page_nbr_sample=2)" ] }, { "cell_type": "code", "execution_count": 14, "id": "d6fffd86", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2024-05-29 10:24:20 [api_calls.py:458] INFO - Scope '['focus-project-1234']' contains 159 entities for data type 'observations'.\n", "2024-05-29 10:24:20 [api_calls.py:478] INFO - Started reading available records.\n", "2024-05-29 10:24:20 [api_calls.py:481] INFO - Reading page 0 out of 16 pages.\n", "2024-05-29 10:24:20 [api_calls.py:481] INFO - Reading page 2 out of 16 pages.\n", "2024-05-29 10:24:21 [api_calls.py:481] INFO - Reading page 4 out of 16 pages.\n", "2024-05-29 10:24:22 [api_calls.py:481] INFO - Reading page 6 out of 16 pages.\n", "2024-05-29 10:24:23 [api_calls.py:481] INFO - Reading page 8 out of 16 pages.\n", "2024-05-29 10:24:24 [api_calls.py:481] INFO - Reading page 10 out of 16 pages.\n", "2024-05-29 10:24:24 [api_calls.py:481] INFO - Reading page 12 out of 16 pages.\n", "2024-05-29 10:24:26 [api_calls.py:481] INFO - Reading page 14 out of 16 pages.\n", "2024-05-29 10:24:26 [api_calls.py:493] INFO - Finished reading available records.\n" ] } ], "source": [ "# see the API-documentation for a full description of filter possibilities\n", "# to filter on concepts, see example shown later in this notebook.\n", "observations = sensing_clues.get_observations(\n", " groups=groups,\n", " date_until=\"2018-07-01\",\n", " coord={\"north\": 32, \"east\": 20, \"south\": 31.5, \"west\": 10}\n", ")" ] }, { "cell_type": "code", "execution_count": 15, "id": "d9b7fc10", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
entityIdentityTypeentityNameprojectIdprojectNameobservationTypewhenwhereagentNameconceptLabelconceptId
0O1234-8298573771345653336-2095human activityObservation1234Demo Uploadhuman activity2018-06-17T00:00:00+02:00{'type': 'Point', 'coordinates': [19.46837283,...Logshttps://sensingclues.poolparty.biz/SCCSSOntolo...
1O1234-8298573771345653336-2095human activityObservation1234Demo Uploadhuman activity2018-06-17T00:00:00+02:00{'type': 'Point', 'coordinates': [19.46837283,...Burnedhttps://sensingclues.poolparty.biz/SCCSSOntolo...
2O1234-8298573771345653336-2087human activityObservation1234Demo Uploadhuman activity2018-06-10T00:00:00+02:00{'type': 'Point', 'coordinates': [16.37800461,...Kilnhttps://sensingclues.poolparty.biz/SCCSSOntolo...
3O1234-8298573771345653336-2087human activityObservation1234Demo Uploadhuman activity2018-06-10T00:00:00+02:00{'type': 'Point', 'coordinates': [16.37800461,...Burnedhttps://sensingclues.poolparty.biz/SCCSSOntolo...
4O1234-8298573771345653336-2082human activityObservation1234Demo Uploadhuman activity2018-06-05T00:00:00+02:00{'type': 'Point', 'coordinates': [17.05109027,...Kilnhttps://sensingclues.poolparty.biz/SCCSSOntolo...
\n", "
" ], "text/plain": [ " entityId entityType entityName projectId \\\n", "0 O1234-8298573771345653336-2095 human activity Observation 1234 \n", "1 O1234-8298573771345653336-2095 human activity Observation 1234 \n", "2 O1234-8298573771345653336-2087 human activity Observation 1234 \n", "3 O1234-8298573771345653336-2087 human activity Observation 1234 \n", "4 O1234-8298573771345653336-2082 human activity Observation 1234 \n", "\n", " projectName observationType when \\\n", "0 Demo Upload human activity 2018-06-17T00:00:00+02:00 \n", "1 Demo Upload human activity 2018-06-17T00:00:00+02:00 \n", "2 Demo Upload human activity 2018-06-10T00:00:00+02:00 \n", "3 Demo Upload human activity 2018-06-10T00:00:00+02:00 \n", "4 Demo Upload human activity 2018-06-05T00:00:00+02:00 \n", "\n", " where agentName conceptLabel \\\n", "0 {'type': 'Point', 'coordinates': [19.46837283,... Logs \n", "1 {'type': 'Point', 'coordinates': [19.46837283,... Burned \n", "2 {'type': 'Point', 'coordinates': [16.37800461,... Kiln \n", "3 {'type': 'Point', 'coordinates': [16.37800461,... Burned \n", "4 {'type': 'Point', 'coordinates': [17.05109027,... Kiln \n", "\n", " conceptId \n", "0 https://sensingclues.poolparty.biz/SCCSSOntolo... \n", "1 https://sensingclues.poolparty.biz/SCCSSOntolo... \n", "2 https://sensingclues.poolparty.biz/SCCSSOntolo... \n", "3 https://sensingclues.poolparty.biz/SCCSSOntolo... \n", "4 https://sensingclues.poolparty.biz/SCCSSOntolo... " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "observations.head()" ] }, { "cell_type": "markdown", "id": "4c6e18bd", "metadata": {}, "source": [ "### Get tracks\n", "\n", "You can filter the extracted observations in multiple ways, such as data, coordinates (bounding box) and concepts, similar to `get_observations`. " ] }, { "cell_type": "code", "execution_count": 16, "id": "022cebfb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2024-05-29 10:24:27 [api_calls.py:458] INFO - Scope '['focus-project-1234']' contains 0 entities for data type 'tracks'.\n", "2024-05-29 10:24:27 [api_calls.py:495] WARNING - No data available for 'tracks', returning empty dataframe.\n" ] } ], "source": [ "tracks = sensing_clues.get_tracks(\n", " groups=groups,\n", " date_until=\"2018-07-01\",\n", " coord={\"north\": 32, \"east\": 20, \"south\": 31.5, \"west\": 10}\n", ")" ] }, { "cell_type": "code", "execution_count": 17, "id": "1cbd568d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: []\n", "Index: []" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tracks.head()" ] }, { "cell_type": "markdown", "id": "eb1c735a", "metadata": {}, "source": [ "#### Add geosjon-data to tracks\n", "\n", "If available, you can add geojson-data (including geometries) to the tracks." ] }, { "cell_type": "code", "execution_count": 18, "id": "c3df74a9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2024-05-29 10:24:27 [api_calls.py:189] WARNING - No tracks available, cannot obtain geojson-data.\n" ] } ], "source": [ "tracks_geo = sensing_clues.add_geojson_to_tracks(tracks)" ] }, { "cell_type": "markdown", "id": "69486170", "metadata": {}, "source": [ "## Advanced functionality" ] }, { "cell_type": "markdown", "id": "ca81e533", "metadata": {}, "source": [ "### Get all available concepts and their hierarchy\n", "\n", "SensingClues offers hierarchies containing the available concepts (e.g. animals). As shown later in this notebook, you can use this information to subsequently query:\n", "- the details for a specific concept\n", "- check the occurrence of each concept in the group(s) of observations you have access to." ] }, { "cell_type": "code", "execution_count": 19, "id": "eb691cfd", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 1209 entries, 0 to 1537\n", "Data columns (total 6 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 id 1209 non-null object\n", " 1 parent 1209 non-null object\n", " 2 label 1209 non-null object\n", " 3 altLabels 753 non-null object\n", " 4 children 155 non-null object\n", " 5 isTopConcept 1209 non-null bool \n", "dtypes: bool(1), object(5)\n", "memory usage: 57.9+ KB\n" ] } ], "source": [ "hierarchy = sensing_clues.get_hierarchy(scope=\"SCCSS\")\n", "hierarchy.info()" ] }, { "cell_type": "markdown", "id": "3b244e0c", "metadata": {}, "source": [ "### Get details for specific concepts in the hierarchy\n", "\n", "You can get information on children or the parents of a concept in the hierarchy by filtering on its label or id. Use the available helper functions to do so. For example, you could do the following for the concept of a \"Kite\" (oid = \"https://sensingclues.poolparty.biz/SCCSSOntology/222\"):\n", "\n", "```\n", "oid = \"https://sensingclues.poolparty.biz/SCCSSOntology/222\"\n", "helpers.get_children_for_id(hierarchy, oid)\n", "helpers.get_parent_for_id(hierarchy, oid)\n", "helpers.get_label_for_id(hierarchy, oid)\n", "```\n", "\n", "or, if filtering on the label itself:\n", "\n", "```\n", "label = 'Kite'\n", "helpers.get_children_for_label(hierarchy, label)\n", "helpers.get_parent_for_label(hierarchy, label)\n", "helpers.get_id_for_label(hierarchy, label)\n", "```\n", "\n", "N.B. Alternatively, you could directly filter the `hierarchy`-dataframe yourself of course." ] }, { "cell_type": "markdown", "id": "5bb0bae3", "metadata": {}, "source": [ "#### Tell me, what animal belongs to this concept id?" ] }, { "cell_type": "code", "execution_count": 20, "id": "2b79b56c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Kite'" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "oid = \"https://sensingclues.poolparty.biz/SCCSSOntology/222\"\n", "helpers.get_label_for_id(hierarchy, oid)" ] }, { "cell_type": "markdown", "id": "73a65f76", "metadata": {}, "source": [ "#### Does this Kite have any children?" ] }, { "cell_type": "code", "execution_count": 21, "id": "fd4a87a6", "metadata": { "lines_to_next_cell": 2 }, "outputs": [ { "data": { "text/plain": [ "['https://sensingclues.poolparty.biz/SCCSSOntology/224',\n", " 'https://sensingclues.poolparty.biz/SCCSSOntology/223']" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "label = \"Kite\"\n", "children_label = helpers.get_children_for_label(hierarchy, label)\n", "children_label" ] }, { "cell_type": "markdown", "id": "b38c204f", "metadata": {}, "source": [ "#### What are the details for these children?" ] }, { "cell_type": "code", "execution_count": 22, "id": "3f7ab1ad", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idparentlabelaltLabelschildrenisTopConcept
448https://sensingclues.poolparty.biz/SCCSSOntolo...https://sensingclues.poolparty.biz/SCCSSOntolo...Kite black[Kite_black, Black kite, Milvus migrans, Kite_...NaNFalse
1108https://sensingclues.poolparty.biz/SCCSSOntolo...https://sensingclues.poolparty.biz/SCCSSOntolo...Kite red[red_kite, Milvus milvus, Kite_red, red_kite, ...NaNFalse
\n", "
" ], "text/plain": [ " id \\\n", "448 https://sensingclues.poolparty.biz/SCCSSOntolo... \n", "1108 https://sensingclues.poolparty.biz/SCCSSOntolo... \n", "\n", " parent label \\\n", "448 https://sensingclues.poolparty.biz/SCCSSOntolo... Kite black \n", "1108 https://sensingclues.poolparty.biz/SCCSSOntolo... Kite red \n", "\n", " altLabels children isTopConcept \n", "448 [Kite_black, Black kite, Milvus migrans, Kite_... NaN False \n", "1108 [red_kite, Milvus milvus, Kite_red, red_kite, ... NaN False " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hierarchy.loc[hierarchy[\"id\"].isin(children_label)]" ] }, { "cell_type": "markdown", "id": "9227df92", "metadata": {}, "source": [ "### Filter observations on concept\n", "\n", "Here we show an example of filtering the data on these concepts.\n", "\n", "**Instructions:**\n", "- Set `concepts` to include, e.g. 'animal', specified as a Pool Party URL, e.g. \"https://sensingclues.poolparty.biz/SCCSSOntology/186\".\n", "- Note that you can infer the URL's available for a certain common name by using the helper function `helpers.get_label_for_id(hierarchy, oid)`, as shown above.\n", "- Further, if you want to exclude subconcepts, i.e. keep observations with the label 'animal' but exclude observations with the label 'elephant', set `include_subconcepts=False`.\n" ] }, { "cell_type": "code", "execution_count": 23, "id": "7adc677c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2024-05-29 10:24:28 [api_calls.py:458] INFO - Scope '['focus-project-1234']' contains 5 entities for data type 'observations'.\n", "2024-05-29 10:24:28 [api_calls.py:478] INFO - Started reading available records.\n", "2024-05-29 10:24:28 [api_calls.py:481] INFO - Reading page 0 out of 1 pages.\n", "2024-05-29 10:24:28 [api_calls.py:493] INFO - Finished reading available records.\n" ] } ], "source": [ "concept_animal = [\n", " \"https://sensingclues.poolparty.biz/SCCSSOntology/308\", # Impala\n", " \"https://sensingclues.poolparty.biz/SCCSSOntology/319\", # Giraffe \n", " \n", " # or infer the id using a label, for instance:\n", " # helpers.get_id_for_label(hierarchy, \"Animal sighting\"),\n", "]\n", "observations = sensing_clues.get_observations(\n", " groups=groups,\n", " date_until=\"2018-07-01\",\n", " concepts=concept_animal,\n", " coord={\"north\": 32, \"east\": 20, \"south\": 31.5, \"west\": 10}\n", ")" ] }, { "cell_type": "code", "execution_count": 24, "id": "e479a1bf", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
entityIdentityTypeentityNameprojectIdprojectNameobservationTypewhenwhereagentNameconceptLabelconceptId
0O1234-8298573771345653336-1609human activityObservation1234Demo Uploadhuman activity2017-02-10T00:00:00+01:00{'type': 'Point', 'coordinates': [18.39919963,...Carcasshttps://sensingclues.poolparty.biz/SCCSSOntolo...
1O1234-8298573771345653336-1609human activityObservation1234Demo Uploadhuman activity2017-02-10T00:00:00+01:00{'type': 'Point', 'coordinates': [18.39919963,...Giraffehttps://sensingclues.poolparty.biz/SCCSSOntolo...
2O1234-8298573771345653336-1609human activityObservation1234Demo Uploadhuman activity2017-02-10T00:00:00+01:00{'type': 'Point', 'coordinates': [18.39919963,...Recordedhttps://sensingclues.poolparty.biz/SCCSSOntolo...
3O1234-8298573771345653336-1541human activityObservation1234Demo Uploadhuman activity2016-10-02T00:00:00+02:00{'type': 'Point', 'coordinates': [15.83503126,...Impalahttps://sensingclues.poolparty.biz/SCCSSOntolo...
4O1234-8298573771345653336-1541human activityObservation1234Demo Uploadhuman activity2016-10-02T00:00:00+02:00{'type': 'Point', 'coordinates': [15.83503126,...Logshttps://sensingclues.poolparty.biz/SCCSSOntolo...
\n", "
" ], "text/plain": [ " entityId entityType entityName projectId \\\n", "0 O1234-8298573771345653336-1609 human activity Observation 1234 \n", "1 O1234-8298573771345653336-1609 human activity Observation 1234 \n", "2 O1234-8298573771345653336-1609 human activity Observation 1234 \n", "3 O1234-8298573771345653336-1541 human activity Observation 1234 \n", "4 O1234-8298573771345653336-1541 human activity Observation 1234 \n", "\n", " projectName observationType when \\\n", "0 Demo Upload human activity 2017-02-10T00:00:00+01:00 \n", "1 Demo Upload human activity 2017-02-10T00:00:00+01:00 \n", "2 Demo Upload human activity 2017-02-10T00:00:00+01:00 \n", "3 Demo Upload human activity 2016-10-02T00:00:00+02:00 \n", "4 Demo Upload human activity 2016-10-02T00:00:00+02:00 \n", "\n", " where agentName conceptLabel \\\n", "0 {'type': 'Point', 'coordinates': [18.39919963,... Carcass \n", "1 {'type': 'Point', 'coordinates': [18.39919963,... Giraffe \n", "2 {'type': 'Point', 'coordinates': [18.39919963,... Recorded \n", "3 {'type': 'Point', 'coordinates': [15.83503126,... Impala \n", "4 {'type': 'Point', 'coordinates': [15.83503126,... Logs \n", "\n", " conceptId \n", "0 https://sensingclues.poolparty.biz/SCCSSOntolo... \n", "1 https://sensingclues.poolparty.biz/SCCSSOntolo... \n", "2 https://sensingclues.poolparty.biz/SCCSSOntolo... \n", "3 https://sensingclues.poolparty.biz/SCCSSOntolo... \n", "4 https://sensingclues.poolparty.biz/SCCSSOntolo... " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "observations.head()" ] }, { "cell_type": "markdown", "id": "6691b09b", "metadata": {}, "source": [ "### Count concepts related to observations\n", "\n", "Get the number of observations per concept in the ontology (hierarchy).\n", "\n", "You can filter on for instance:\n", "- `date_from` and `date_until`.\n", "- A list of child concepts, e.g. by extracting children for the label \"Animal sighting\" from hierarchy (see example below)." ] }, { "cell_type": "code", "execution_count": 25, "id": "ebd77764", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
frequency_value
098https://sensingclues.poolparty.biz/SCCSSOntolo...
197https://sensingclues.poolparty.biz/SCCSSOntolo...
21https://sensingclues.poolparty.biz/SCCSSOntolo...
31https://sensingclues.poolparty.biz/SCCSSOntolo...
412https://sensingclues.poolparty.biz/SCCSSOntolo...
\n", "
" ], "text/plain": [ " frequency _value\n", "0 98 https://sensingclues.poolparty.biz/SCCSSOntolo...\n", "1 97 https://sensingclues.poolparty.biz/SCCSSOntolo...\n", "2 1 https://sensingclues.poolparty.biz/SCCSSOntolo...\n", "3 1 https://sensingclues.poolparty.biz/SCCSSOntolo...\n", "4 12 https://sensingclues.poolparty.biz/SCCSSOntolo..." ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "date_from = \"2010-01-01\"\n", "date_until = \"2024-01-01\"\n", "label = \"Animal sighting\"\n", "children_label = helpers.get_children_for_label(hierarchy, label)\n", "concept_counts = sensing_clues.get_concept_counts(\n", " groups, date_from=date_from, date_until=date_until, concepts=children_label\n", ")\n", "concept_counts.head()" ] }, { "cell_type": "markdown", "id": "0a7ea135", "metadata": {}, "source": [ "#### Example: visualize concept counts\n", "\n", "To make the visualization intelligible, you can add information on labels from the `hierarchy`-dataframe.\n", "\n", "To do so, first install matplotlib." ] }, { "cell_type": "code", "execution_count": 26, "id": "b6597a5c", "metadata": {}, "outputs": [], "source": [ "# !pip install matplotlib" ] }, { "cell_type": "code", "execution_count": 27, "id": "3e62106d", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "plt.style.use(\"ggplot\")" ] }, { "cell_type": "code", "execution_count": 28, "id": "03230f35", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "min_freq = 10\n", "if not concept_counts.empty:\n", " concept_freq = concept_counts.merge(\n", " hierarchy, left_on=\"_value\", right_on=\"id\", how=\"left\"\n", " )\n", " concept_freq[\"label\"] = concept_freq[\"label\"].fillna(concept_freq[\"_value\"])\n", " concept_freq = concept_freq.set_index(\"label\")[\"frequency\"].sort_values(\n", " ascending=True\n", " )\n", "\n", " concept_freq.loc[concept_freq >= min_freq].plot(kind=\"barh\")\n", " plt.title(\n", " f\"Number of observations per concept in group(s)\\n'{groups}' for label '{label}'\\n\"\n", " f\"[{date_from} to {date_until} and minimum frequency {min_freq}]\",\n", " fontsize=12,\n", " )\n", " plt.xlabel(\"Number of observations per concept label\")\n", " plt.ylabel(\"Label of concept\")" ] }, { "cell_type": "markdown", "id": "a2953114", "metadata": {}, "source": [ "### Get layers" ] }, { "cell_type": "code", "execution_count": 29, "id": "bae8f768", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
pidlidlayerNamedescriptiongeometryType
012340test_multipolygonAll MultiPolygon geometries for layer test_mul...MultiPolygon
112341test_polygonAll Polygon geometries for layer test_polygonPolygon
\n", "
" ], "text/plain": [ " pid lid layerName \\\n", "0 1234 0 test_multipolygon \n", "1 1234 1 test_polygon \n", "\n", " description geometryType \n", "0 All MultiPolygon geometries for layer test_mul... MultiPolygon \n", "1 All Polygon geometries for layer test_polygon Polygon " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# check all available layers\n", "layers = sensing_clues.get_all_layers()\n", "layers" ] }, { "cell_type": "markdown", "id": "608f5ff2", "metadata": {}, "source": [ "### Get details for an individual layer" ] }, { "cell_type": "code", "execution_count": 30, "id": "08df069e", "metadata": {}, "outputs": [], "source": [ "layer = sensing_clues.get_layer_features(layer_name=\"test_multipolygon\")" ] }, { "cell_type": "code", "execution_count": 31, "id": "d026ea42", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
idDocIdShortIdOBJECTIDEntityIdNAMEgeometry_type_idgeometry_typegeometry_coordinatesproperties_DocIdproperties_ShortIdproperties_OBJECTIDproperties_EntityIdproperties_NAME
0194355991/GeoFeature/G1234-9853708381955736304-1.json194355991194355991G1234-9853708381955736304-1NoneMULTIPOLYGON (((4.87038 52.25303, 4.80171 52.2...Feature194355991MultiPolygon[[[[4.87037658691406, 52.2530274427686], [4.80.../GeoFeature/G1234-9853708381955736304-1.json194355991194355991G1234-9853708381955736304-1None
1151201554/GeoFeature/G1234-9853708381955736304-2.json151201554151201554G1234-9853708381955736304-2NoneMULTIPOLYGON (((5.06779 52.05713, 5.06710 52.0...Feature151201554MultiPolygon[[[[5.06778717041016, 52.0571349329375], [5.06.../GeoFeature/G1234-9853708381955736304-2.json151201554151201554G1234-9853708381955736304-2None
2108047117/GeoFeature/G1234-9853708381955736304-3.json108047117108047117G1234-9853708381955736304-3NoneMULTIPOLYGON (((5.87116 51.85381, 5.88181 51.8...Feature108047117MultiPolygon[[[[5.87116241455078, 51.8538062484514], [5.88.../GeoFeature/G1234-9853708381955736304-3.json108047117108047117G1234-9853708381955736304-3None
\n", "
" ], "text/plain": [ " id DocId ShortId \\\n", "0 194355991 /GeoFeature/G1234-9853708381955736304-1.json 194355991 \n", "1 151201554 /GeoFeature/G1234-9853708381955736304-2.json 151201554 \n", "2 108047117 /GeoFeature/G1234-9853708381955736304-3.json 108047117 \n", "\n", " OBJECTID EntityId NAME \\\n", "0 194355991 G1234-9853708381955736304-1 None \n", "1 151201554 G1234-9853708381955736304-2 None \n", "2 108047117 G1234-9853708381955736304-3 None \n", "\n", " geometry _type _id \\\n", "0 MULTIPOLYGON (((4.87038 52.25303, 4.80171 52.2... Feature 194355991 \n", "1 MULTIPOLYGON (((5.06779 52.05713, 5.06710 52.0... Feature 151201554 \n", "2 MULTIPOLYGON (((5.87116 51.85381, 5.88181 51.8... Feature 108047117 \n", "\n", " geometry_type geometry_coordinates \\\n", "0 MultiPolygon [[[[4.87037658691406, 52.2530274427686], [4.80... \n", "1 MultiPolygon [[[[5.06778717041016, 52.0571349329375], [5.06... \n", "2 MultiPolygon [[[[5.87116241455078, 51.8538062484514], [5.88... \n", "\n", " properties_DocId properties_ShortId \\\n", "0 /GeoFeature/G1234-9853708381955736304-1.json 194355991 \n", "1 /GeoFeature/G1234-9853708381955736304-2.json 151201554 \n", "2 /GeoFeature/G1234-9853708381955736304-3.json 108047117 \n", "\n", " properties_OBJECTID properties_EntityId properties_NAME \n", "0 194355991 G1234-9853708381955736304-1 None \n", "1 151201554 G1234-9853708381955736304-2 None \n", "2 108047117 G1234-9853708381955736304-3 None " ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "layer.head()" ] }, { "cell_type": "markdown", "id": "5cb91e80", "metadata": {}, "source": [ "#### Plot available geometries\n", "\n", "This requires installation of library to visualize geospatial data. Here, we use Folium." ] }, { "cell_type": "code", "execution_count": 32, "id": "c21e9ed5", "metadata": {}, "outputs": [], "source": [ "# !pip install folium" ] }, { "cell_type": "code", "execution_count": 33, "id": "7e583232", "metadata": {}, "outputs": [], "source": [ "import folium" ] }, { "cell_type": "code", "execution_count": 34, "id": "413b5e65", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
Make this Notebook Trusted to load map: File -> Trust Notebook
" ], "text/plain": [ "" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poly_map = folium.Map([51.9244, 4.4777], zoom_start=8, tiles=\"cartodbpositron\")\n", "for _, geometry in layer[\"geometry\"].items():\n", " folium.GeoJson(geometry).add_to(poly_map)\n", "folium.LatLngPopup().add_to(poly_map)\n", "poly_map" ] }, { "cell_type": "code", "execution_count": null, "id": "bfa6a6bf", "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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", "version": "3.10.7" } }, "nbformat": 4, "nbformat_minor": 5 }