Create Entity Object¶
Problem¶
You want to create an Entity
object and add it to the entanglement graph.
Solution¶
An Entity
object can be thought of as a person, place or thing. In this example we are going to create a ‘place’ object for Carbon County in Wyoming and add it to entanglement graph in a personal project.
All Object
can have additional qualifers however, only name
is required. In this example we will also adding domain
, category
, and type
qualifers and description
, geometry
, and item
attributes.
Setup¶
Start by seting up the basic geodesic workflow in python.
import geodesic
geodesic.set_active_project('cookbook-examples')
Creating The Object¶
entity_object = geodesic.entanglement.Object(object_class='entity',
name='carbon-county-wyoming',
domain = 'geographic-area',
category = 'united-states',
alias='Carbon County, Wyoming',
type='county',
description='Carbon County is a county located in the U.S. state of Wyoming.',
geometry='POLYGON ((-106.32274199957294 41.38264700034904, -106.32116499957539 40.99912299990268, -107.91842100022114 41.00203599989817, -107.9297360002036 41.65959599991919, -107.50971999981385 41.6574519999225, -107.52292299979337 42.43435599975828, -106.07340299995997 42.43323599975997, -106.06840599996775 41.39502800032983, -106.32274199957294 41.38264700034904))',
item={'population': '14,542', 'area': '7,964 sq mi'}
)
entity_object.save()
The domain
, category
, and type
qualifers are used to help organize and classify the object. The description
, geometry
, and item
attributes are optional and can be used to store additional information about the object.
The geometry
attribute can be anything, but only points/polygons will be indexed.
The item
is an arbitrary dictionary of info about the object, however it must be JSON serializable.
Accessing the Object¶
To check that your object has been created and added to the entanglement graph, you can use the get_objects()
method to search either by object type or by name.
geodesic.get_objects(object_class='entity')
[entity:geographic-area:united-states:county:carbon-county-wyoming]
geodesic.get_objects(search='carbon')
[entity:geographic-area:united-states:county:carbon-county-wyoming]
We can save the search results as a list of Objects
and then access the object by index which will allow us to access the object’s attributes.
obj_lst = geodesic.get_objects(search='carbon')
carbon_county_obj = obj_lst[0]
dict(carbon_county_obj)
Mapping The Object¶
Since our Entity
object has a geometry attribute, we can place it on a map. The method geometry()
will return the object’s geometry which we can then create a feature collection and add it to a map.
from geodesic import mapping
fc = geodesic.Feature(geometry=carbon_county_obj.geometry)
m = mapping.Map(center=(41.067292, -105.948662), zoom=6)
m.add_feature_collection('carbon_county', fc)
m