Home > Software design >  GeoJSON properties - Kotlin
GeoJSON properties - Kotlin

Time:09-24

i have some response form HTTP API - GeoJSON data, but how i can get only some values from features --> properties in Kotlin - Android Studio? Or is there some statement where I can determine for example all object where "year==2014" to array/list? So i want only some properties to array/list or variable. Thank you for your help :)

This working, but how to loop for each properties?

val test = jsonObject.getJSONArray("features").getJSONObject(0).getJSONObject("properties").getString("year")
{
    "type": "FeatureCollection",
    "name": "cycl_accidents_cycl_neh_xytabletopoint_spa1",
    "crs": { "crs".
        "type": "name",
        "properties": { "properties".
            "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
        }
    },
    "features": [
        {
            "type": "feature",
            "properties": {
                "objectid": 1,
                "join_count": 1,
                "target_fid": 1,
                "id": 60040140073.0,
                "d": -604774.832,
                "e": -1162719.75,
                "datum": "2014-08-03T00:00:00Z",
                "day": 7,
                "year": 2014,
                "month": 8,
                "collision": "other type of accident",
                "cause": "driving on the wrong side of the road, driving into oncoming traffic",
                "alcohol": "Yes, blood alcohol content between 0,8‰ and 1,0‰",
                "at fault": "driver of a non-motor vehicle",
                'consequences': 'accident resulting in death or injury',
                'road condition': 'surface dry, not contaminated',
                'weather conditions': 'not obstructed',
                'visibility': 'at night - no public lighting, visibility not impaired by weather conditions',
                'visibility': 'good',
                'mishap': 'none or none of the above',
                "type_of_community": "road monitored (in selected cities)",
                'type of vehicle': 'bicycle',
                'rider_status': 'under the influence of alcohol, blood alcohol content up to 0,99 ‰',
                "affected_ride": 1,
                "person": "driver",
                "mark_person": "without helmet (only for motorcyclists or cyclists)",
                "gender": "male",
                "consequence": "slight injury",
                "killed_os": 0,
                "severely_injured_os": 0,
                "slightly_injured_os": 1,
                "material damage": 0,
                "time": 430,
                "hour": 4,
                "month_t": "august",
                "day of the week": "Sunday",
                "age_group": "19-24",
                "name": "Brno-Bosonohy",
                "point_x": 16.52074206,
                "point_y": 49.17113043000001,
                "globalid": "{CD1B3254-7DD0-478E-8B3A-C6221ADC3DAB}"
            },
            "geometry": {
                "type": "point",
                "coordinates": [
                    16.520742066000025,
                    49.171130437000045
                ]
            }
        },
        {
            "type": "Feature",
            "properties": {
                "objectid": 2,
                "join_count": 1,
                "target_fid": 2,
                "id": 60206100089.0,
                "d": -596241.506,
                "e": -1157759.125,
                "datum": "2010-01-21T00:00:00Z",
                "day": 4,
                "year": 2010,
                "month": 1,
                "collision": "collision with a moving non-rail vehicle",
                "cause": "driver not fully engaged in driving the vehicle",
                "alcohol": "No",
                "at fault": "by the driver of the motor vehicle",
                'consequences': 'accident resulting in death or injury',
                'road condition': 'surface dry, dirty (sand, dust, leaves, gravel, etc.)',
                'weather conditions': 'not obstructed',
                'visibility': 'at night - with public lighting, visibility not impaired by weather conditions',
                'visibility': 'good',
                'accident location': 'near a pedestrian crossing (within 20 m)',
                'road type': 'local road',
                'type of vehicle': 'bicycle',
                'condition_ridic': 'good - no adverse circumstances detected',
                "affected_ridice": 1,
                "person": "driver",
                "person_mark": "with helmet (only for motorcyclists or cyclists)",
                "gender": "male",
                "consequence": "slight injury",
                "killed_os": 0,
                "severely_injured_os": 0,
                "slightly_injured_os": 1,
                "material damage": 20,
                "time": 1829,
                "hour": 18,
                "month_t": "January",
                "day of the week": "Thursday",
                "age_group": "33-44",
                "name": "Brno-sever",
                "point_x": 16.62980964,
                "point_y": 49.22375737,
                "globalid": "{83269995-7595-4174-B258-92B2231CF8F2}"
            },
            "geometry": {
                "type": "point",
                "coordinates": [
                    16.629809646000069,
                    49.223757371000033
                ]
            }
        },
]
}

CodePudding user response:

I am assuming features is the list which you get after parsing your response.

first parse your response to your model class. please check this link for that. https://stackoverflow.com/a/68501606/7248394.

for example

val apiData = Gson().fromJson(readJson, YourModelClass::class.java)

val features = apiData.features

    val featureList = features.filter{
        it.properties.year =="2014"
    }

so this will give featureList of 2014 year.

  • Related