Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Represent Canvas Fragment as a Geographic Area on a Web Map #183

Merged
merged 196 commits into from
Apr 2, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
196 commits
Select commit Hold shift + click to select a range
65193d5
A geographic assertion done in presentation 3 using an embedded annot…
Apr 24, 2020
03c939d
Target a text document that is a correspondence betweens friends invo…
Apr 24, 2020
9966d0c
This may be ready for eyes.
Apr 24, 2020
85197b6
Don't need purpose since there is only one body for the Annotation an…
Apr 24, 2020
119dbbd
Fix up index
Apr 24, 2020
25a3053
Fix up index
Apr 24, 2020
39ea6ff
Cleanup naming convention
Apr 24, 2020
6d9650d
We can do this the easy way, or the hard way.
Apr 28, 2020
d8074e1
Perk up this index a bit, for presentation and review.
Apr 28, 2020
33dc065
Add in dimensions
Apr 28, 2020
cd7e8b8
Fix target
Apr 28, 2020
8167412
Add in image format
Apr 28, 2020
f8fa7e0
Small index fixes
Apr 28, 2020
60c1ee2
small transcription text change.
Apr 28, 2020
4c689de
Small index fixes
Apr 28, 2020
f9e37af
Small index fixes
Apr 28, 2020
c518a41
Changes from notes after meeting. Glen is right, an Annotation/Annot…
Apr 28, 2020
a9359fd
Collapsing the recipe into its evolved form. An image fragment with …
Apr 29, 2020
096e7e2
Collapsing the recipe into its evolved form. An image fragment with …
Apr 29, 2020
0add286
Wrap it all in a manifest
Apr 29, 2020
74af8bf
Collapsing the recipe into its evolved form. An image fragment with …
Apr 29, 2020
c4d6f00
Point index to the FeatureCollection example artifact that is otherwi…
Apr 29, 2020
9527d37
Wrap it all in a manifest
Apr 29, 2020
b6125eb
Small changes for Travis.
Apr 29, 2020
b70e35e
Better json file naming convention.
Apr 29, 2020
df738cf
Fix content annotation
Apr 29, 2020
36d978b
Squash transcribing anno for now. I think i found another bug with t…
Apr 29, 2020
aa4cf48
It is not the transcription annos fault. It is the old issue resurfa…
Apr 29, 2020
47e2841
All embedded annotations fully expanded.
Apr 29, 2020
1599902
Describe textual annotation a bit
Apr 29, 2020
d733c3e
Do the right label
Apr 29, 2020
da89491
Give label as a property to the GeoJSON, for effect.
Apr 29, 2020
f747a78
More sensible labels
Apr 29, 2020
67b072c
More sensible labels
Apr 29, 2020
e102e5b
Merge branch 'master' into 0139-geo-annotation
May 4, 2020
26973ca
Provide some explanation for why 2 annotations instead of 1 annotatio…
May 4, 2020
9a90b2f
Simplify label, add a summary.
May 14, 2020
0d0b83c
Small json update
May 28, 2020
a59753a
Trigger the travis build.
May 30, 2020
6dc0850
JSON fixes
May 30, 2020
2e36127
JSON fixes
May 30, 2020
570cd46
update copy on index
May 30, 2020
7033ded
update copy on index
May 30, 2020
2c04a9a
update copy on index
May 30, 2020
712534e
update copy on index
May 30, 2020
7784ff9
update copy on index
May 30, 2020
b1ccadf
update copy on index
May 30, 2020
d6a5105
Different JSON includer
May 30, 2020
1f83449
Different JSON includer
May 30, 2020
3d151ef
update copy on index
May 31, 2020
152922d
geolocate is more appropriate than geocode
Jun 2, 2020
525e7f3
Fix copy a bit
Jun 2, 2020
4b031a0
Use existing motivations/purposes. That way @context stays clean.
Jun 19, 2020
2539cc6
Use existing motivations/purposes. That way @context stays clean.
Jun 19, 2020
292d3fc
motivation and purpose plug
Jun 19, 2020
6f03939
update line highlighting
Jun 19, 2020
02c7399
Test travis
Jun 24, 2020
43dbed8
Small summary change.
Jun 26, 2020
346d6de
Small related recipes change.
Jun 26, 2020
9fea999
Merge branch 'master' into 0139-geo-annotation
Jun 26, 2020
36a5e54
Small index updates. Ready for PR.
Jun 26, 2020
4daa5e1
Small rename
Jun 26, 2020
47cbbe2
long, lat. NOT lat, long. WGS84
Jun 26, 2020
2a47fa7
Small index updates
Jul 10, 2020
691b308
Merge branch 'master' into 0139-geo-annotation
Jul 10, 2020
7eb3d3c
Small index change
Jul 10, 2020
f49e325
Small index change
Jul 10, 2020
8d16295
Small index change
Jul 10, 2020
52a290d
Small index change
Jul 10, 2020
c42a16b
Small index update
Jul 10, 2020
b639a79
Change Title
Jul 10, 2020
78052b5
change manifest label, add italics for titles.
Jul 10, 2020
275a610
Add italics to canvas
Jul 10, 2020
8418cee
No i tag.
Jul 10, 2020
de00ff3
escaped quotes and italic html in summary
Jul 10, 2020
f800e03
Single space after periods.
Jul 10, 2020
5dc58aa
Single space after periods.
Jul 10, 2020
33bbdd2
Add this space.
Jul 10, 2020
0801e0f
Final change from review at call
Jul 10, 2020
e081af3
Final change from review at call
Jul 10, 2020
fa4fcde
Final change from review at call
Jul 10, 2020
b848e6a
Changes suggested during last week's call
Jul 24, 2020
15fdb65
Changes suggested during last week's call
Jul 24, 2020
bf1b454
Merge branch 'master' into 0139-geo-annotation
Jul 28, 2020
fb8d90f
Update label to help separate recipes.
Jul 28, 2020
226e83d
Update label to help separate recipes.
Jul 28, 2020
dfff0b9
Merge branch 'master' into 0139-geo-annotation
Aug 7, 2020
118b7c5
small updates
thehabes Aug 10, 2020
e5fd3e4
Updates to simplify some of the copy and implement some style guid de…
thehabes Aug 10, 2020
904d300
small updates
thehabes Aug 10, 2020
65ca39a
Fix IIIF Presentation API 3.0 references
thehabes Aug 10, 2020
ef1e8e7
Merge branch 'master' into 0139-geo-annotation
thehabes Sep 17, 2020
e7074da
Merge branch 'master' into 0139-geo-annotation
thehabes Oct 9, 2020
ae32d3e
First pass at changes suggested at Cookbook call.
thehabes Oct 9, 2020
c5321e4
Change wording a bit.
thehabes Oct 9, 2020
d8d69fa
Merge branch 'master' into 0139-geo-annotation
thehabes Oct 16, 2020
be61739
Changes to index from notes.
thehabes Oct 16, 2020
4c3b7c6
To 'Image' or to 'image'.
thehabes Oct 16, 2020
5968d3a
Final changes from IIIF Cookbook group review.
thehabes Oct 19, 2020
c22f149
Merge branch 'master' into 0139-geo-annotation
thehabes Oct 19, 2020
8e11fa1
'via' -> 'to'
thehabes Oct 19, 2020
371f737
Paragraph breaklines
thehabes Oct 19, 2020
c6570e8
Having a pass at the TRC suggested changes.
thehabes Oct 21, 2020
710af2c
Get rid of extraneous resolvable resources. Add in the link to the _…
thehabes Oct 21, 2020
e8f10ba
Get rid of that (TBD, TBD, TBD)
thehabes Oct 21, 2020
cd0a74c
Fix the link. Use recipe name, not branch name.
thehabes Oct 21, 2020
517a854
Fix the link. Use recipe name, not branch name.
thehabes Oct 21, 2020
93e8fec
Merge branch 'master' into 0139-geo-annotation
glenrobson Oct 23, 2020
703627e
Merge branch 'master' into 0139-geo-annotation
glenrobson Oct 23, 2020
12a7983
Ensure merged with master. Change Use Case wording to help clarify i…
thehabes Oct 28, 2020
bcb2c67
Revert "Ensure merged with master. Change Use Case wording to help c…
thehabes Oct 29, 2020
6b24c78
More description about why to do this and how it intends to work.
thehabes Nov 19, 2020
aaaa65f
Try to add examples
thehabes Nov 19, 2020
293ce8b
Try to add examples
thehabes Nov 19, 2020
73808ca
Merge branch 'master' into 0139-geo-annotation
thehabes Nov 19, 2020
48b21fe
Try to add examples
thehabes Nov 19, 2020
c0c793a
Try to add examples
thehabes Nov 19, 2020
3fca10d
Clean it up a bit.
thehabes Nov 19, 2020
3e99106
Clean it up a bit.
thehabes Nov 19, 2020
01abb77
Clean it up a bit.
thehabes Nov 19, 2020
551cbba
Clean it up a bit.
thehabes Nov 19, 2020
8199ff0
better examples
thehabes Nov 19, 2020
8b6c4e4
better examples
thehabes Nov 19, 2020
a239a73
clean up
thehabes Nov 19, 2020
b54e5a1
example title change
thehabes Dec 16, 2020
f9058de
Also highlight context
thehabes Dec 16, 2020
8f920e9
No more 'geolocate'
thehabes Dec 16, 2020
cabd777
Redo labels, redact 'geolocate'
thehabes Dec 17, 2020
e251d26
Redo labels, redact 'geolocate'
thehabes Dec 17, 2020
6b320e5
Small wording changes
thehabes Dec 18, 2020
1660d98
Consistency if IIIF Presentation API 3.0 references.
thehabes Dec 18, 2020
552c854
Consistency if IIIF Presentation API 3.0 references.
thehabes Dec 18, 2020
92cb8d6
more clear
thehabes Dec 18, 2020
f510e9e
Changes from previous Cookbook review. Happy new year!
thehabes Jan 6, 2021
67a552b
Just playin...
thehabes Jan 6, 2021
c0e01c5
Play some more...
thehabes Jan 6, 2021
f6ef93e
Cool, this lightbox technique works.
thehabes Jan 6, 2021
ba7b30d
This is good. We may decide to present the image/thumbnail differently.
thehabes Jan 6, 2021
d1cd1ce
This is good. We may decide to present the image/thumbnail differently.
thehabes Jan 6, 2021
4a9b1bf
Finalize, ready to be reviewed.
thehabes Jan 6, 2021
e9da2e4
Fix the title here, get rid of 'geolocate' term.
thehabes Jan 6, 2021
78d92cc
Finalize, ready to be reviewed.
thehabes Jan 6, 2021
6ccf19e
Changes in response to hypothesis notes from Dawn and Trip -- THANK YOU.
thehabes Jan 7, 2021
bc34140
Title change
thehabes Jan 7, 2021
b5add4c
Title change in related recipes
thehabes Jan 7, 2021
a1a31df
ahh the title struggles
thehabes Jan 7, 2021
6e035a3
More changes in response to hypothesis notes from Dawn and Trip -- TH…
thehabes Jan 7, 2021
46286a2
More changes in response to hypothesis notes from Dawn and Trip -- TH…
thehabes Jan 7, 2021
99ba8f6
Fix tics
thehabes Jan 7, 2021
efae2a3
Fix tics
thehabes Jan 7, 2021
03ac2da
In favor of clarity
thehabes Jan 7, 2021
70dd89c
In favor of clarity
thehabes Jan 7, 2021
586de0d
In favor of clarity
thehabes Jan 7, 2021
c57fd70
Better for phones
thehabes Jan 7, 2021
a782b98
Add in these tics, since we mean specifically the Annotation.body member
thehabes Jan 8, 2021
989c1eb
Change up wording a bit (feedback from Cookbook review)
thehabes Jan 14, 2021
4dcc4b7
small touch up
thehabes Jan 29, 2021
981e99b
A new kind of soft intro
thehabes Jan 29, 2021
a7974d5
Redo for a resource that has a mp
thehabes Feb 9, 2021
ef7059c
New example image for new manifest and resource
thehabes Feb 9, 2021
feccb50
Whoops done testing, change motivation back to tagging.
thehabes Feb 9, 2021
5e737a6
More wording changes
thehabes Feb 9, 2021
49607d2
Example zoomed in a bit more.
thehabes Feb 9, 2021
061caab
A bit more clear
thehabes Feb 9, 2021
47cb275
no hyphen
thehabes Feb 9, 2021
7dd19c1
Better example image
thehabes Feb 17, 2021
f0e1991
Put in the fixture image. Better example image.
thehabes Feb 26, 2021
2ea86b4
see image info link, since it is a fixture now.
thehabes Feb 26, 2021
a5ca4b7
Classing for that link
thehabes Feb 26, 2021
357b715
Classing for that link
thehabes Feb 26, 2021
4491c9c
Consistency with 'Web Map'
thehabes Feb 26, 2021
ddaafa3
br
thehabes Feb 26, 2021
c96d033
Classing for that link
thehabes Feb 26, 2021
ac4a425
whitespace spacing
thehabes Feb 26, 2021
ca7ec3a
Get rid of extra image
thehabes Feb 26, 2021
759920d
Put full image next to example
thehabes Mar 3, 2021
3da80d0
Play with look and feel
thehabes Mar 3, 2021
3d2fea4
Play with look and feel
thehabes Mar 3, 2021
38738b6
Play with look and feel
thehabes Mar 3, 2021
cd025af
Play with look and feel
thehabes Mar 3, 2021
197af6b
Play with look and feel
thehabes Mar 3, 2021
f9cf5b1
Play with look and feel
thehabes Mar 3, 2021
96d8404
Play with look and feel
thehabes Mar 3, 2021
c284d0c
Play with look and feel
thehabes Mar 3, 2021
4c1f70a
This one is best.
thehabes Mar 3, 2021
bc9bfcf
Better on smaller screens
thehabes Mar 3, 2021
7482bfc
Better on smaller screens
thehabes Mar 3, 2021
cb5c9b3
Better on smaller screens
thehabes Mar 3, 2021
8d211bf
Small note about GeoJSON.properties.label
thehabes Mar 3, 2021
8df109f
Add the comma
thehabes Mar 3, 2021
d4a8f28
Merge branch 'master' into 0139-geo-annotation
glenrobson Mar 5, 2021
9120726
Changes in response to Cookbook Editors and IIIF Maps TSG call partic…
thehabes Mar 10, 2021
f3327ea
Handle 'Web Map' in a label in the Manifest.
thehabes Mar 10, 2021
436c06f
use web mapping client term effectively.
thehabes Mar 10, 2021
1995921
make this one web map
thehabes Mar 10, 2021
b72beb2
Merge branch 'master' into 0139-geo-annotation
glenrobson Apr 2, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions _includes/links.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
[0202]: {{site.baseurl}}/recipe/0202-start-canvas/ "Load Manifest Beginning with a Specific Canvas"
[0014]: {{site.baseurl}}/recipe/0014-accompanyingcanvas/ "Audio Presentation with Accompanying Image"
[0015]: {{site.baseurl}}/recipe/0015-start/ "Begin playback at a specific point - Time-based media"
[0139]: {{site.baseurl}}/recipe/0139-geolocate-canvas-fragment/ "Represent Canvas Fragment as a Geographic Point on a Web Map"

[0024]: {{site.baseurl}}/recipe/0024-book-4-toc/ "Table of Contents for Book Chapters"
[0026]: {{site.baseurl}}/recipe/0026-toc-opera/ "Table of Contents for A/V Content"
Expand Down
2 changes: 2 additions & 0 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ _(leading on to segmentation examples later)_
* tagging
* hotspot linking
* Annotation in the context of a particular content resource https://github.com/IIIF/iiif-stories/issues/101
* [Geographic coordinates][0139]

## Internal structure

Expand Down Expand Up @@ -130,6 +131,7 @@ _(leading on to segmentation examples later)_
* Video with captions in multiple languages
* Mixed Image Service references (a mashup, with img2 and img3 services)
* Glenn Gould - score and performance scenarios (transcribing)
* A Map

## Access Control
_this might be in a separate auth cookbook_
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
81 changes: 81 additions & 0 deletions recipe/0139-geolocate-canvas-fragment/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
---
title: Represent Canvas Fragment as a Geographic Area in a Web Mapping Client
id: 139
layout: recipe
tags: [maps, annotation]
summary: "Use Web Annotation to provide geocoordinates for a fragment of an IIIF Presentation API 3.0 Canvas."
---

A multitude of real world resources benefit from geographic data, many of which are already represented in IIIF digital collections. New and old maps, travel journals, newspapers, manuscripts, poems and diaries are just a subset of cultural heritage artifacts that have geographic characteristics. These traits bring human context to the material and offer a recognizable, comfortable setting for discovering connections between disparate resources.

### Use Case
A Canvas has a region of interest that contains a map. You would like to associate this map with geographic coordinates for use in web mapping clients like [Leaflet](https://leafletjs.com/examples/geojson/) and [OpenLayers](https://openlayers.org/en/latest/examples/geojson.html). This could mean simply showing a non-interactive shape on a web map, but often more data from the resource is displayed in connection with the shape as a result of available functionality. The example below shows a pop-up that appears upon clicking the shape. The pop-up includes the targeted map as well as other metadata from the resource.

<p style="text-align: center;">
<a class="imagelink" target="_blank" href="https://fixtures.iiif.io/info.html?file=/images/loc/chesapeake_map/88695674.jpg"><img id="orig" onclick="" style="max-width: 11em;" src="./images/piece2.png" /></a>
<img id="leaf" onclick="showBigImage()" style="max-height: 11em; max-width: 100%;" src="./images/leaflet_example.png" />
</p>

### Implementation Notes
The third party [GeoJSON-LD](https://geojson.org/geojson-ld/) context is included in addition to the IIIF Presentation API 3.0 context. The GeoJSON-LD context supplies the vocabulary terms for the Annotation bodies since the IIIF Presentation API 3.0 context does not describe those terms. When there are multiple contexts, the `@context` property can be an array which is processed as a set. Typically order does not matter for a set. However, when the IIIF context is used in these arrays it must be the last item in the set.

The GeoJSON `properties` object is generic and [can be nearly anything](https://tools.ietf.org/html/rfc7946#section-3.2). It is used to pass metadata along with the geocoordinates. This has implications on clients and parsers that must discern what data to use. For example, if the targeted resource has a `label` property and the `properties` object has a `label` property, the consuming interface must make a choice on which to prioritize for presentation purposes. In the image from the Use Case section, the "Label" uses the GeoJSON `properties` object's `label` property (lines 80-83) instead of the `label` property from the Annotation or Canvas. This is because web mapping clients are designed to look for metadata in GeoJSON `properties` for display.

Note that [`geometry` has more types besides `Polygon`.](https://tools.ietf.org/html/rfc7946#section-3.1)

### Restrictions
Applications that strictly follow Linked Data practices will find that nested GeoJSON coordinate arrays are incompatible with the processing model of JSON-LD 1.0. The JSON-LD 1.1 processing model does not have this restriction. Be aware if you plan to serialize JSON-LD into [other semantic data formats or markup languages](https://www.w3.org/TR/json-ld11/#relationship-to-other-linked-data-formats) such as RDF.

### Example
The Manifest has one Canvas with one Image, and the Canvas has the same size dimensions as the Image. The Canvas has one Annotation Page with one Annotation targeting the region of interest where a map depiction appears using the [#xywh Fragment Selector syntax](https://www.w3.org/TR/annotation-model/#fragment-selector). The Annotation `body` is GeoJSON-LD, which is supported by a number of open source mapping systems. A client can parse the Annotation from the Canvas and pass the Annotation `body` into a web map resulting in rendered geometric shapes on a world map. Often, data from the resource such as an image URL, label, or description is connected with those shapes via [`properties`](https://tools.ietf.org/html/rfc7946#section-3.2) in GeoJSON. Since the image used is a IIIF Fixture following [IIIF Image API 3.0](https://iiif.io/api/image/3.0/), you can see the targeted fragment by supplying [the values used in the #xywh selector to the image URL](https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/920,3600,1510,3000/max/0/default.jpg).

{% include manifest_links.html viewers="" manifest="manifest.json" %}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you add a link to the manifest by including the following here:

{% include manifest_links.html viewers="" manifest="manifest.json" %}

{% include jsonviewer.html src="manifest.json" config='data-line="2-5, 67-111"' %}

## Related Recipes
* [Fragment Selectors][0020]
* [Tagging Annotation][0021]

{% include acronyms.md %}
{% include links.md %}

<div id="bigImage">
<h4 style="color:white;"> Click Image to Close </h4>
<img onclick="hideBigImage()" style="max-height: 100%; max-width: 100%;" src="./images/leaflet_example.png" />
</div>

<style>
#bigImage{
position: fixed;
top: 0;
left : 0;
height : 100em;
width: 100%;
background-color: rgba(0,0,0,.8);
display:none;
text-align: center;
padding-top: 4px;
}
img{
cursor: pointer;
}
.imagelink{
margin-right: 1%;
display: inline-block;
text-decoration: none !important;
border-bottom: none !important;
}
.imagelink:focus{
outline: none !important;
}
</style>

<script type="text/javascript">
function showBigImage(){
document.getElementById("bigImage").style.display = "block"
}
function hideBigImage(){
document.getElementById("bigImage").style.display = "none"
}
</script>
105 changes: 105 additions & 0 deletions recipe/0139-geolocate-canvas-fragment/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
{
"@context":[
"http://geojson.org/geojson-ld/geojson-context.jsonld",
"http://iiif.io/api/presentation/3/context.json"
],
"id":"{{ id.url }}",
"type":"Manifest",
"label":{
"en":[
"Recipe Manifest for #139"
]
},
"summary":{
"en":[
"A IIIF Presentation API 3.0 Manifest containing a GeoJSON-LD Web Annotation which targets a Canvas fragment."
]
},
"items":[
{
"id":"{{ id.path }}/canvas.json",
"type":"Canvas",
"label":{
"en":[
"Chesapeake and Ohio Canal Pamphlet"
]
},
"width":5212,
"height":7072,
"items":[
{
"id":"{{ id.path }}/contentPage.json",
"type":"AnnotationPage",
"items":[
{
"id":"{{ id.path }}/content.json",
"type":"Annotation",
"motivation":"painting",
"label":{
"en":[
"Pamphlet Cover"
]
},
"body":{
"id":"https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674/full/max/0/default.jpg",
"type":"Image",
"format":"image/jpeg",
"service":[
{
"id":"https://iiif.io/api/image/3.0/example/reference/43153e2ec7531f14dd1c9b2fc401678a-88695674",
"type":"ImageService3",
"profile":"level1"
}
],
"width":5212,
"height":7072
},
"target":"{{ id.path }}/canvas.json"
}
]
}
],
"annotations":[
{
"id":"{{ id.path }}/supplementingPage.json",
"type":"AnnotationPage",
"items":[
{
"id":"{{ id.path }}/geoAnno.json",
"type":"Annotation",
"motivation":"tagging",
"label":{
"en":[
"Annotation containing GeoJSON-LD coordinates that place the map depiction onto a Leaflet web map."
]
},
"body":{
"id":"{{ id.path }}/geo.json",
"type":"Feature",
"properties":{
"label":{
"en":[
"Targeted Map from Chesapeake and Ohio Canal Pamphlet"
]
}
},
"geometry":{
"type":"Polygon",
"coordinates":[
[
[-77.097847, 38.901359],
[-77.026940, 38.901359],
[-77.026940, 39.034040],
[-77.097847, 39.034040]
]
]
}
},
"target":"{{ id.path }}/canvas.json#xywh=920,3600,1510,3000"
}
]
}
]
}
]
}