Hi Anjo, Yes, you can style resources based on concept values. Here are the steps:
1. Using a PostgreSQL tool (like PGAdmin, Navicat, or the command line) confirm that Arches has loaded a materialized view called mv_geojson_geoms. This view collects all the geometries for all resource model in Arches. It includes the instance id, geometry, and node id for every resource instance for every model in Arches. If your version of Arches doesn't have it, it looks like this: SELECT t.tileid, t.resourceinstanceid, n.nodeid, (st_transform(st_setsrid(st_geomfromgeojson(((json_array_elements((((t.tiledata)::json -> (n.nodeid)::text) -> 'features'::text)) -> 'geometry'::text))::text), 4326), 900913))::geometry(Geometry,900913) AS geom FROM (tiles t LEFT JOIN nodes n ON ((t.nodegroupid = n.nodegroupid))) WHERE ((( SELECT count(*) AS count FROM jsonb_object_keys(t.tiledata) jsonb_object_keys(jsonb_object_keys) WHERE (jsonb_object_keys.jsonb_object_keys IN ( SELECT (n_1.nodeid)::text AS nodeid FROM nodes n_1 WHERE (n_1.datatype = 'geojson-feature-collection'::text)))) > 0) AND (n.datatype = 'geojson-feature-collection'::text)) 2. You will write a view that references mv_geojson_geoms to identify (in your case) all instances where the condition type is not null. Here is an example of a view that finds all buildings with "Grade I" protection type: SELECT row_number() OVER () AS gid, mv.tileid, mv.resourceinstanceid, mv.nodeid, mv.geom, (name_tile.tiledata ->> '677f303d-09cc-11e7-9aa6-6c4008b05c4c'::text) AS name, 'Grade I Listed Building' AS protection FROM ((mv_geojson_geoms mv LEFT JOIN tiles type_tile ON ((mv.resourceinstanceid = type_tile.resourceinstanceid))) LEFT JOIN tiles name_tile ON ((mv.resourceinstanceid = name_tile.resourceinstanceid))) WHERE (((type_tile.tiledata ->> '4ca32698-fa12-11e6-9e3e-026d961c88e6'::text) = 'bc908dbc-45ff-426c-8713-f622907730ab'::text) AND ((name_tile.tiledata ->> '677f303d-09cc-11e7-9aa6-6c4008b05c4c'::text) IS NOT NULL)) A few things to note here: a. the type_tile.tiledata ->> ''4ca32698-fa12-11e6-9e3e-026d961c88e6'::text is used to identify the concept node that you are interested in. In your case, this would be the id of the Condition Type node in your model. You can use the json representation of the your model (e.g.: export your model and use a text editor to open it) to find the node id b. the = 'bc908dbc-45ff-426c-8713-f622907730ab'::text is used to identify the id of the concept you want to match. In your case this would be the id of the concept you want to match (e.g.: "good"). This value may be in the model json that you used to find the concept id. Or you can use the concepts.json file that came with the mapping file that you used to import data into Arches. (note that you can re-create this file by going to your resource model in Arches Designer, click on manage, and select create mapping file) c. In this example, the name_tile.tiledata is used to identify the node in the model that you use to name your instance. 3. Once you have the view working, you can create a layer using Arches built-in map server. Here's an example of a simple json configuration for the view: { "type": "vector", "name": "Grade I Buildings", "layers": [{ "id": "grade_i_buildings", "type": "circle", "minzoom": 11, "maxzoom": 21, "source": "grade_i_buildings", "source-layer": "grade_i_buildings", "layout": { "visibility": "visible" }, "paint": { "circle-radius": { "stops": [ [11, 2], [15, 8], [21, 50] ] } , "circle-color": "rgba(58, 171, 209,0.25)", "circle-stroke-color": "rgb(58, 171, 209)", "circle-stroke-width": 1 } }], "config": { "provider": { "class": "TileStache.Goodies.VecTiles:Provider", "kwargs": { "dbinfo": { "host": "localhost", "user": "postgres", "password": "postgis", "database": "her_lincoln", "port": "5432" }, "simplify": 0.5, "queries": [ "select gid as __id__, name as __name__, geom as __geometry__ from grade_i_buildings" ] } }, "allowed origin": "*", "compress": true, "write cache": false } } You can add this layer to Arches as an overlay using the following command: python manage.py packages -o add_tileserver_layer -t ~dwuthrich/arches/packages/lincoln_release/map_layers/tile_server/overlays/grade_i_buildings/grade_i_buildings.json -n "Grade I Buildings" (obviously, you'll need to replace this path and file name in this example with your own path/file) 4. You can now go to Arches map manager, navigate to overlays, and view your layer. Note that you can click on the "service styling" tab and then click on the black area to see the json used to style your data. If you copy this json, you can paste it into any basemap (or other overlay) style in Arches. In this way, you could automatically add your styled data to a basemap, or aggregate multiple overlays into a single overlay or basemap. I hope this helps. Cheers, Dennis On Friday, April 27, 2018 at 12:31:45 PM UTC-7, Anjo Weichbrodt wrote: > > Hi, > > I would like to represent geometries of resources in different colors > depending on their attributes. > Example: there is the resource "Wall" which has the "Condition Type"s *good, > fair, poor*. Is it possible to represent all walls with *good* condition > green, *fair* condition orange and *poor* condition red? > > Thank you! > Anjo > -- -- To post, send email to archesproject@googlegroups.com. To unsubscribe, send email to archesproject+unsubscr...@googlegroups.com. For more information, visit https://groups.google.com/d/forum/archesproject?hl=en --- You received this message because you are subscribed to the Google Groups "Arches Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to archesproject+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.