From 9b633edc6ccf5d9516c53aa1d5a968c60c46c189 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Mon, 8 Jul 2019 14:59:10 -0700 Subject: [PATCH 001/127] beginning to rework code for Django 2.0, python 3 compatibility --- data_manager/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_manager/models.py b/data_manager/models.py index e9bfbf0..dbbb85b 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -2,7 +2,7 @@ from django.contrib.sites.models import Site from django.db import models from django.template.defaultfilters import slugify -from django.core.urlresolvers import reverse +from django.urls import reverse #from sorl.thumbnail import ImageField # From MARCO/utils.py From f5f480efb01eae93cc45a7e4f49b5aa7239a98b7 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Mon, 8 Jul 2019 15:10:50 -0700 Subject: [PATCH 002/127] adding on_delete to ForeignKey models --- data_manager/models.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/data_manager/models.py b/data_manager/models.py index dbbb85b..e7350d6 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -697,7 +697,7 @@ class MultilayerDimension(models.Model): label = models.CharField(max_length=50, help_text='label to be used in mapping tool slider') order = models.IntegerField(default=100, help_text='the order in which this dimension will be presented among other dimensions on this layer') animated = models.BooleanField(default=False, help_text='enable auto-toggling of layers across this dimension') - layer = models.ForeignKey(Layer) + layer = models.ForeignKey(Layer, on_delete=models.CASCADE) def __unicode__(self): return self.name @@ -722,8 +722,11 @@ def delete(self, *args, **kwargs): class MultilayerAssociation(models.Model): name = models.CharField(max_length=200) - parentLayer = models.ForeignKey(Layer, related_name="parent_layer", db_column='parentlayer') - layer = models.ForeignKey(Layer, null=True, blank=True, default=None, related_name="associated_layer", db_column='associatedlayer') + parentLayer = models.ForeignKey(Layer, related_name="parent_layer", + db_column='parentlayer', on_delete=models.CASCADE) + layer = models.ForeignKey(Layer, null=True, blank=True, default=None, + related_name="associated_layer", db_column='associatedlayer', + on_delete=models.SET_NULL) def __unicode__(self): return self.name @@ -740,7 +743,7 @@ def __str__(self): # print("Association: %s ---DELETED---" % str(self)) class MultilayerDimensionValue(models.Model): - dimension = models.ForeignKey(MultilayerDimension) + dimension = models.ForeignKey(MultilayerDimension, on_delete=models.CASCADE) value = models.CharField(max_length=200, help_text="Actual value of selection") label = models.CharField(max_length=50, help_text="Label for this selection seen in mapping tool slider") order = models.IntegerField(default=100) From 8776c414ad3ec4d91901b1221f425d37cd0f265c Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Mon, 8 Jul 2019 15:35:35 -0700 Subject: [PATCH 003/127] more py3, dj2 updates --- data_manager/admin.py | 2 +- data_manager/views.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data_manager/admin.py b/data_manager/admin.py index 804b9fe..ae2e30b 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin from django import forms -from models import * +from .models import * import nested_admin from import_export import fields, resources diff --git a/data_manager/views.py b/data_manager/views.py index f81992c..b8c8422 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -5,7 +5,7 @@ from django.shortcuts import get_object_or_404, render_to_response from django.template import RequestContext from django.views.decorators.cache import cache_page -from models import * +from .models import * from .serializers import BriefLayerSerializer from rest_framework import viewsets @@ -52,7 +52,7 @@ def create_layer(request): layer.themes.add(theme) layer.save() - except Exception, e: + except Exception as e: return HttpResponse(e.message, status=500) result = layer_result(layer, message="Saved Successfully") @@ -76,7 +76,7 @@ def update_layer(request, layer_id): layer.themes.add(theme) layer.save() - except Exception, e: + except Exception as e: return HttpResponse(e.message, status=500) result = layer_result(layer, message="Edited Successfully") From c5ff886e6096d74f849ee776d45a9091674ad39c Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Mon, 8 Jul 2019 15:48:47 -0700 Subject: [PATCH 004/127] fixing print statements to conform to py3 --- .../management/commands/mdat_update.py | 28 +++++++++---------- data_manager/models.py | 2 +- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/data_manager/management/commands/mdat_update.py b/data_manager/management/commands/mdat_update.py index 1acf2b7..61554c2 100644 --- a/data_manager/management/commands/mdat_update.py +++ b/data_manager/management/commands/mdat_update.py @@ -16,27 +16,27 @@ def handle(self, *args, **options): #grab all parent service directories for enpoint r = requests.get(mdat_rest_path+'MDAT?f=json') - + if r.status_code != 200: return #request status is OK else: - print "**** Request 200 - is OK *****" + print("**** Request 200 - is OK *****") parent_json = r.json() mdat_dirs = parent_json['services'] #loop through mdat service *parent* directory array for directory in mdat_dirs: - print "***** Entering %s *****" % directory['name'] + print("***** Entering %s *****" % directory['name']) #defaults for parent directories - parent_defaults = { - 'name':directory['name'], + parent_defaults = { + 'name':directory['name'], 'layer_type':'checkbox', } synthetic_list = [ - 'MDAT/AvianModels_SyntheticProducts', - 'MDAT/Fish_NEFSC_SyntheticProducts', + 'MDAT/AvianModels_SyntheticProducts', + 'MDAT/Fish_NEFSC_SyntheticProducts', 'MDAT/Mammal_SyntheticProducts' ] @@ -58,7 +58,7 @@ def handle(self, *args, **options): ] if directory['type'] != 'MapServer': - print "***** %s is not a MapServer Layer" % directory['name'] + print("***** %s is not a MapServer Layer" % directory['name']) return #continue on if it's a MapServer layer && a synthetic product elif directory['name'] in synthetic_list: @@ -67,7 +67,7 @@ def handle(self, *args, **options): obj = Layer.objects.get(themes=mdat, name=directory['name']) #create parent layer/directory - if not except Layer.DoesNotExist: - print "***** Adding %s *****" % directory['name'] + print("***** Adding %s *****" % directory['name']) obj = Layer.objects.create(**parent_defaults) obj.site = [1,2] obj.themes = [mdat_id] @@ -87,7 +87,7 @@ def handle(self, *args, **options): #loop through layers within parent directory array for layer in mdat_layers: - print "***** Looping through %s *****" % layer['name'] + print("***** Looping through %s *****" % layer['name']) layer_defaults = { 'name':layer['name'], 'layer_type':'ArcRest', @@ -102,18 +102,16 @@ def handle(self, *args, **options): #update name, just incase it changed lyr.name = layer['name'] lyr.save() - print "***** Layer %s exists *****" % layer['name'] + print("***** Layer %s exists *****" % layer['name']) #create layers of parent directory - if they don't exist except Layer.DoesNotExist: - print "***** Adding %s *****" % layer['name'] + print("***** Adding %s *****" % layer['name']) lyr = Layer.objects.create(**layer_defaults) lyr.site = [1,2] - lyr.themes = [mdat_id] + lyr.themes = [mdat_id] lyr.sublayers = [layer_id] lyr.save() #sublayer fields need to be filled with pks for parent dir obj.sublayers.add(lyr.pk) obj.save() - - diff --git a/data_manager/models.py b/data_manager/models.py index e7350d6..08a21c4 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -15,7 +15,7 @@ def get_domain(port=8010): domain = 'http://' + domain except: domain = '..' - #print domain + #print(domain) return domain def reset_cache(sites): From ab26e538ea3d392bbeabb41a25c5fc8b8fdb6876 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Mon, 8 Jul 2019 17:14:01 -0700 Subject: [PATCH 005/127] updating import for settings for newer django --- data_manager/admin.py | 1 + 1 file changed, 1 insertion(+) diff --git a/data_manager/admin.py b/data_manager/admin.py index ae2e30b..2a070f3 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -198,6 +198,7 @@ class LayerAdmin(ImportExportMixin, nested_admin.NestedModelAdmin): NestedMultilayerDimensionInline, ] + from django.conf import settings from settings import BASE_DIR add_form_template = '%s/data_manager/templates/admin/LayerForm.html' % BASE_DIR change_form_template = '%s/data_manager/templates/admin/LayerForm.html' % BASE_DIR From f8ffb2a492288ee2270127f0ec6a4e6a5597997e Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Mon, 8 Jul 2019 17:16:10 -0700 Subject: [PATCH 006/127] more updating import for settings for newer django --- data_manager/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_manager/admin.py b/data_manager/admin.py index 2a070f3..9963919 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -199,7 +199,7 @@ class LayerAdmin(ImportExportMixin, nested_admin.NestedModelAdmin): ] from django.conf import settings - from settings import BASE_DIR + BASE_DIR = settings.BASE_DIR add_form_template = '%s/data_manager/templates/admin/LayerForm.html' % BASE_DIR change_form_template = '%s/data_manager/templates/admin/LayerForm.html' % BASE_DIR From 52e456dc8918c3636ea4d9ee476012b901bb9a57 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Tue, 9 Jul 2019 15:30:30 -0700 Subject: [PATCH 007/127] django 2 url patterns update --- data_manager/urls.py | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/data_manager/urls.py b/data_manager/urls.py index dec0829..d6b96a4 100644 --- a/data_manager/urls.py +++ b/data_manager/urls.py @@ -1,15 +1,17 @@ -from django.conf.urls import url, include, patterns +# from django.conf.urls import url, include, patterns +from django.urls import re_path, include from rest_framework import routers from . import views router = routers.DefaultRouter() router.register(r'layers', views.LayerViewSet) -urlpatterns = patterns('', - url(r'^nested_admin/', include('nested_admin.urls')), - url(r'^api/', include(router.urls)), - (r'^layer/([A-Za-z0-9_-]+)$', views.update_layer), - (r'^layer$', views.create_layer), - (r'^get_json$', views.get_json), - (r'^wms_capabilities', views.wms_request_capabilities), -) +urlpatterns = [ + #'', + re_path(r'^nested_admin/', include('nested_admin.urls')), + re_path(r'^api/', include(router.urls)), + re_path(r'^layer/([A-Za-z0-9_-]+)$', views.update_layer), + re_path(r'^layer$', views.create_layer), + re_path(r'^get_json$', views.get_json), + re_path(r'^wms_capabilities', views.wms_request_capabilities), +] From db46302597ecfd31c185c6c2f431a611c7e2fb5d Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Tue, 9 Jul 2019 18:23:14 -0700 Subject: [PATCH 008/127] hand-editing migrations to comply with py3, dj2 --- data_manager/migrations/0001_initial.py | 38 +-- .../migrations/0002_layer_point_radius.py | 2 +- .../migrations/0003_auto_20150709_2140.py | 9 +- .../migrations/0005_layer_wms_version.py | 2 +- .../migrations/0007_auto_20160304_0057.py | 4 +- .../migrations/0008_layer_search_query.py | 2 +- .../migrations/0009_auto_20160919_2237.py | 4 +- .../0010_layer_disable_arcgis_attributes.py | 2 +- .../migrations/0011_auto_20170723_2036.py | 4 +- .../migrations/0012_auto_20171116_2357.py | 18 +- .../0018_layer_data_publish_date.py | 2 +- .../migrations/0019_auto_20171120_2310.py | 2 +- ...layerdimension_multilayerdimensionvalue.py | 19 +- .../migrations/0022_auto_20180501_2245.py | 5 +- .../migrations/0024_auto_20190710_0058.py | 247 ++++++++++++++++++ 15 files changed, 305 insertions(+), 55 deletions(-) create mode 100644 data_manager/migrations/0024_auto_20190710_0058.py diff --git a/data_manager/migrations/0001_initial.py b/data_manager/migrations/0001_initial.py index 9b9bb12..1d6e121 100644 --- a/data_manager/migrations/0001_initial.py +++ b/data_manager/migrations/0001_initial.py @@ -47,32 +47,32 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(max_length=100)), ('slug_name', models.CharField(max_length=100, null=True, blank=True)), - ('layer_type', models.CharField(help_text=b'use placeholder to temporarily remove layer from TOC', max_length=50, choices=[(b'XYZ', b'XYZ'), (b'WMS', b'WMS'), (b'ArcRest', b'ArcRest'), (b'radio', b'radio'), (b'checkbox', b'checkbox'), (b'Vector', b'Vector'), (b'placeholder', b'placeholder')])), + ('layer_type', models.CharField(help_text='use placeholder to temporarily remove layer from TOC', max_length=50, choices=[('XYZ', 'XYZ'), ('WMS', 'WMS'), ('ArcRest', 'ArcRest'), ('radio', 'radio'), ('checkbox', 'checkbox'), ('Vector', 'Vector'), ('placeholder', 'placeholder')])), ('url', models.CharField(max_length=255, null=True, blank=True)), - ('shareable_url', models.BooleanField(default=True, help_text=b'Indicates whether the data layer (e.g. map tiles) can be shared with others (through the Map Tiles Link)')), - ('arcgis_layers', models.CharField(help_text=b'comma separated list of arcgis layer IDs', max_length=255, null=True, blank=True)), + ('shareable_url', models.BooleanField(default=True, help_text='Indicates whether the data layer (e.g. map tiles) can be shared with others (through the Map Tiles Link)')), + ('arcgis_layers', models.CharField(help_text='comma separated list of arcgis layer IDs', max_length=255, null=True, blank=True)), ('is_sublayer', models.BooleanField(default=False)), - ('is_disabled', models.BooleanField(default=False, help_text=b'when disabled, the layer will still appear in the TOC, only disabled')), + ('is_disabled', models.BooleanField(default=False, help_text='when disabled, the layer will still appear in the TOC, only disabled')), ('disabled_message', models.CharField(max_length=255, null=True, blank=True)), - ('legend', models.CharField(help_text=b'URL or path to the legend image file', max_length=255, null=True, blank=True)), - ('legend_title', models.CharField(help_text=b'alternative to using the layer name', max_length=255, null=True, blank=True)), + ('legend', models.CharField(help_text='URL or path to the legend image file', max_length=255, null=True, blank=True)), + ('legend_title', models.CharField(help_text='alternative to using the layer name', max_length=255, null=True, blank=True)), ('legend_subtitle', models.CharField(max_length=255, null=True, blank=True)), ('utfurl', models.CharField(max_length=255, null=True, blank=True)), ('description', models.TextField(null=True, blank=True)), ('data_overview', models.TextField(null=True, blank=True)), ('data_source', models.CharField(max_length=255, null=True, blank=True)), ('data_notes', models.TextField(null=True, blank=True)), - ('bookmark', models.CharField(help_text=b'link to view data layer in the planner', max_length=755, null=True, blank=True)), - ('kml', models.CharField(help_text=b'link to download the KML', max_length=255, null=True, blank=True)), - ('data_download', models.CharField(help_text=b'link to download the data', max_length=255, null=True, blank=True)), - ('learn_more', models.CharField(help_text=b'link to view description in the Learn section', max_length=255, null=True, blank=True)), - ('metadata', models.CharField(help_text=b'link to view/download the metadata', max_length=255, null=True, blank=True)), - ('source', models.CharField(help_text=b'link back to the data source', max_length=255, null=True, blank=True)), - ('map_tiles', models.CharField(help_text=b'internal link to a page that details how others might consume the data', max_length=255, null=True, blank=True)), - ('thumbnail', models.URLField(help_text=b'not sure we are using this any longer...', max_length=255, null=True, blank=True)), + ('bookmark', models.CharField(help_text='link to view data layer in the planner', max_length=755, null=True, blank=True)), + ('kml', models.CharField(help_text='link to download the KML', max_length=255, null=True, blank=True)), + ('data_download', models.CharField(help_text='link to download the data', max_length=255, null=True, blank=True)), + ('learn_more', models.CharField(help_text='link to view description in the Learn section', max_length=255, null=True, blank=True)), + ('metadata', models.CharField(help_text='link to view/download the metadata', max_length=255, null=True, blank=True)), + ('source', models.CharField(help_text='link back to the data source', max_length=255, null=True, blank=True)), + ('map_tiles', models.CharField(help_text='internal link to a page that details how others might consume the data', max_length=255, null=True, blank=True)), + ('thumbnail', models.URLField(help_text='not sure we are using this any longer...', max_length=255, null=True, blank=True)), ('compress_display', models.BooleanField(default=False)), - ('attribute_event', models.CharField(default=b'click', max_length=35, choices=[(b'click', b'click'), (b'mouseover', b'mouseover')])), - ('mouseover_field', models.CharField(help_text=b'feature level attribute used in mouseover display', max_length=75, null=True, blank=True)), + ('attribute_event', models.CharField(default='click', max_length=35, choices=[('click', 'click'), ('mouseover', 'mouseover')])), + ('mouseover_field', models.CharField(help_text='feature level attribute used in mouseover display', max_length=75, null=True, blank=True)), ('lookup_field', models.CharField(max_length=255, null=True, blank=True)), ('is_annotated', models.BooleanField(default=False)), ('vector_outline_color', models.CharField(max_length=7, null=True, blank=True)), @@ -93,7 +93,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('value', models.CharField(max_length=255, null=True, blank=True)), ('color', models.CharField(max_length=7, null=True, blank=True)), - ('dashstyle', models.CharField(default=b'solid', max_length=11, choices=[(b'dot', b'dot'), (b'dash', b'dash'), (b'dashdot', b'dashdot'), (b'longdash', b'longdash'), (b'longdashdot', b'longdashdot'), (b'solid', b'solid')])), + ('dashstyle', models.CharField(default='solid', max_length=11, choices=[('dot', 'dot'), ('dash', 'dash'), ('dashdot', 'dashdot'), ('longdash', 'longdash'), ('longdashdot', 'longdashdot'), ('solid', 'solid')])), ('fill', models.BooleanField(default=False)), ('graphic', models.CharField(max_length=255, null=True, blank=True)), ], @@ -109,11 +109,11 @@ class Migration(migrations.Migration): ('name', models.CharField(max_length=100)), ('visible', models.BooleanField(default=True)), ('header_image', models.CharField(max_length=255, null=True, blank=True)), - ('header_attrib', models.CharField(max_length=255, null=True, blank=True)), + ('header_attri', models.CharField(max_length=255, null=True, blank=True)), ('overview', models.TextField(null=True, blank=True)), ('description', models.TextField(null=True, blank=True)), ('thumbnail', models.URLField(max_length=255, null=True, blank=True)), - ('factsheet_thumb', models.CharField(max_length=255, null=True, blank=True)), + ('factsheet_thum', models.CharField(max_length=255, null=True, blank=True)), ('factsheet_link', models.CharField(max_length=255, null=True, blank=True)), ('feature_image', models.CharField(max_length=255, null=True, blank=True)), ('feature_excerpt', models.TextField(null=True, blank=True)), diff --git a/data_manager/migrations/0002_layer_point_radius.py b/data_manager/migrations/0002_layer_point_radius.py index 0f22dc4..f0507e8 100644 --- a/data_manager/migrations/0002_layer_point_radius.py +++ b/data_manager/migrations/0002_layer_point_radius.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='layer', name='point_radius', - field=models.IntegerField(help_text=b'Used only for for Point layers (default is 2)', null=True, blank=True), + field=models.IntegerField(help_text='Used only for for Point layers (default is 2)', null=True, blank=True), preserve_default=True, ), ] diff --git a/data_manager/migrations/0003_auto_20150709_2140.py b/data_manager/migrations/0003_auto_20150709_2140.py index 6ed11e9..9c9aade 100644 --- a/data_manager/migrations/0003_auto_20150709_2140.py +++ b/data_manager/migrations/0003_auto_20150709_2140.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from django.db import models, migrations +import django.db.models.deletion def reverse_m2ms(apps, schema_editor): # Do nothing, the M2M table will be destroyed @@ -42,8 +43,8 @@ class Migration(migrations.Migration): name='ThemeSite', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('site', models.ForeignKey(to='sites.Site')), - ('theme', models.ForeignKey(to='data_manager.Theme')), + ('site', models.ForeignKey(to='sites.Site', on_delete=django.db.models.deletion.CASCADE)), + ('theme', models.ForeignKey(to='data_manager.Theme', on_delete=django.db.models.deletion.CASCADE)), ], options={}, bases=(models.Model,), @@ -65,8 +66,8 @@ class Migration(migrations.Migration): name='LayerSite', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('site', models.ForeignKey(to='sites.Site')), - ('layer', models.ForeignKey(to='data_manager.Layer')), + ('site', models.ForeignKey(to='sites.Site', on_delete=django.db.models.deletion.CASCADE)), + ('layer', models.ForeignKey(to='data_manager.Layer', on_delete=django.db.models.deletion.CASCADE)), ], options={}, bases=(models.Model,), diff --git a/data_manager/migrations/0005_layer_wms_version.py b/data_manager/migrations/0005_layer_wms_version.py index 4799071..c812d2c 100644 --- a/data_manager/migrations/0005_layer_wms_version.py +++ b/data_manager/migrations/0005_layer_wms_version.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='layer', name='wms_version', - field=models.CharField(help_text=b'WMS Versioning - usually either 1.1.1 or 1.3.0', max_length=10, null=True, blank=True), + field=models.CharField(help_text='WMS Versioning - usually either 1.1.1 or 1.3.0', max_length=10, null=True, blank=True), preserve_default=True, ), ] diff --git a/data_manager/migrations/0007_auto_20160304_0057.py b/data_manager/migrations/0007_auto_20160304_0057.py index 28eaa84..76c8174 100644 --- a/data_manager/migrations/0007_auto_20160304_0057.py +++ b/data_manager/migrations/0007_auto_20160304_0057.py @@ -22,13 +22,13 @@ class Migration(migrations.Migration): migrations.AddField( model_name='layer', name='order', - field=models.PositiveSmallIntegerField(default=10, help_text=b'input an integer to determine the priority/order of the layer being displayed (1 being the highest)', null=True, blank=True), + field=models.PositiveSmallIntegerField(default=10, help_text='input an integer to determine the priority/order of the layer being displayed (1 being the highest)', null=True, blank=True), preserve_default=True, ), migrations.AddField( model_name='theme', name='order', - field=models.PositiveSmallIntegerField(default=10, help_text=b'input an integer to determine the priority/order of the layer being displayed (1 being the highest)', null=True, blank=True), + field=models.PositiveSmallIntegerField(default=10, help_text='input an integer to determine the priority/order of the layer being displayed (1 being the highest)', null=True, blank=True), preserve_default=True, ), ] diff --git a/data_manager/migrations/0008_layer_search_query.py b/data_manager/migrations/0008_layer_search_query.py index b37b25d..24487c7 100644 --- a/data_manager/migrations/0008_layer_search_query.py +++ b/data_manager/migrations/0008_layer_search_query.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='layer', name='search_query', - field=models.BooleanField(default=False, help_text=b'Select when layers are queryable - e.g. MDAT and CAS'), + field=models.BooleanField(default=False, help_text='Select when layers are queryable - e.g. MDAT and CAS'), preserve_default=True, ), ] diff --git a/data_manager/migrations/0009_auto_20160919_2237.py b/data_manager/migrations/0009_auto_20160919_2237.py index d33bcda..d94dbae 100644 --- a/data_manager/migrations/0009_auto_20160919_2237.py +++ b/data_manager/migrations/0009_auto_20160919_2237.py @@ -14,13 +14,13 @@ class Migration(migrations.Migration): migrations.AddField( model_name='layer', name='connect_companion_layers_to', - field=models.ManyToManyField(help_text=b'Select which main layer(s) you would like to use in conjuction with this companion layer.', related_name='connect_companion_layers_to_rel_+', null=True, to='data_manager.Layer', blank=True), + field=models.ManyToManyField(help_text='Select which main layer(s) you would like to use in conjuction with this companion layer.', related_name='connect_companion_layers_to_rel_+', null=True, to='data_manager.Layer', blank=True), preserve_default=True, ), migrations.AddField( model_name='layer', name='has_companion', - field=models.BooleanField(default=False, help_text=b'Check if this layer has a companion layer'), + field=models.BooleanField(default=False, help_text='Check if this layer has a companion layer'), preserve_default=True, ), ] diff --git a/data_manager/migrations/0010_layer_disable_arcgis_attributes.py b/data_manager/migrations/0010_layer_disable_arcgis_attributes.py index 222d183..b22dab7 100644 --- a/data_manager/migrations/0010_layer_disable_arcgis_attributes.py +++ b/data_manager/migrations/0010_layer_disable_arcgis_attributes.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='layer', name='disable_arcgis_attributes', - field=models.BooleanField(default=False, help_text=b'Click to disable clickable ArcRest layers'), + field=models.BooleanField(default=False, help_text='Click to disable clickable ArcRest layers'), preserve_default=True, ), ] diff --git a/data_manager/migrations/0011_auto_20170723_2036.py b/data_manager/migrations/0011_auto_20170723_2036.py index 14bf944..6bbe2e3 100644 --- a/data_manager/migrations/0011_auto_20170723_2036.py +++ b/data_manager/migrations/0011_auto_20170723_2036.py @@ -20,13 +20,13 @@ class Migration(migrations.Migration): migrations.AddField( model_name='layer', name='espis_region', - field=models.CharField(blank=True, max_length=100, null=True, help_text=b'Region to search within', choices=[(b'Mid Atlantic', b'Mid Atlantic')]), + field=models.CharField(blank=True, max_length=100, null=True, help_text='Region to search within', choices=[('Mid Atlantic', 'Mid Atlantic')]), preserve_default=True, ), migrations.AddField( model_name='layer', name='espis_search', - field=models.CharField(help_text=b'keyphrase search for ESPIS Link', max_length=255, null=True, blank=True), + field=models.CharField(help_text='keyphrase search for ESPIS Link', max_length=255, null=True, blank=True), preserve_default=True, ), ] diff --git a/data_manager/migrations/0012_auto_20171116_2357.py b/data_manager/migrations/0012_auto_20171116_2357.py index ea814f2..9b6d06e 100644 --- a/data_manager/migrations/0012_auto_20171116_2357.py +++ b/data_manager/migrations/0012_auto_20171116_2357.py @@ -20,43 +20,43 @@ class Migration(migrations.Migration): migrations.AddField( model_name='layer', name='wms_additional', - field=models.TextField(help_text=b'additional WMS key-value pairs: &key=value...', null=True, verbose_name=b'WMS Additional Fields', blank=True), + field=models.TextField(help_text='additional WMS key-value pairs: &key=value...', null=True, verbose_name='WMS Additional Fields', blank=True), preserve_default=True, ), migrations.AddField( model_name='layer', name='wms_format', - field=models.CharField(help_text=b'most common: image/png. Only image types supported.', max_length=100, null=True, verbose_name=b'WMS Format', blank=True), + field=models.CharField(help_text='most common: image/png. Only image types supported.', max_length=100, null=True, verbose_name='WMS Format', blank=True), preserve_default=True, ), migrations.AddField( model_name='layer', name='wms_help', - field=models.BooleanField(default=False, help_text=b'Enable simple selection for WMS fields. Only supports WMS 1.1.1'), + field=models.BooleanField(default=False, help_text='Enable simple selection for WMS fields. Only supports WMS 1.1.1'), preserve_default=True, ), migrations.AddField( model_name='layer', name='wms_srs', - field=models.CharField(help_text=b'If not EPSG:3857 WMS requests will be proxied', max_length=100, null=True, verbose_name=b'WMS SRS', blank=True), + field=models.CharField(help_text='If not EPSG:3857 WMS requests will be proxied', max_length=100, null=True, verbose_name='WMS SRS', blank=True), preserve_default=True, ), migrations.AddField( model_name='layer', name='wms_styles', - field=models.CharField(help_text=b'pre-determined styles, if exist', max_length=255, null=True, verbose_name=b'WMS Styles', blank=True), + field=models.CharField(help_text='pre-determined styles, if exist', max_length=255, null=True, verbose_name='WMS Styles', blank=True), preserve_default=True, ), migrations.AddField( model_name='layer', name='wms_time_item', - field=models.CharField(help_text=b'Time Attribute Field, if different from "TIME". Proxy only.', max_length=255, null=True, verbose_name=b'WMS Time Field', blank=True), + field=models.CharField(help_text='Time Attribute Field, if different from "TIME". Proxy only.', max_length=255, null=True, verbose_name='WMS Time Field', blank=True), preserve_default=True, ), migrations.AddField( model_name='layer', name='wms_timing', - field=models.CharField(help_text=b'http://docs.geoserver.org/stable/en/user/services/wms/time.html#specifying-a-time', max_length=255, null=True, verbose_name=b'WMS Time', blank=True), + field=models.CharField(help_text='http://docs.geoserver.org/stable/en/user/services/wms/time.html#specifying-a-time', max_length=255, null=True, verbose_name='WMS Time', blank=True), preserve_default=True, ), migrations.AddField( @@ -68,13 +68,13 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='layer', name='wms_slug', - field=models.CharField(max_length=255, null=True, verbose_name=b'WMS Layer Name', blank=True), + field=models.CharField(max_length=255, null=True, verbose_name='WMS Layer Name', blank=True), preserve_default=True, ), migrations.AlterField( model_name='layer', name='wms_version', - field=models.CharField(blank=True, max_length=10, null=True, help_text=b'WMS Versioning - usually either 1.1.1 or 1.3.0', choices=[(None, b''), (b'1.0.0', b'1.0.0'), (b'1.1.0', b'1.1.0'), (b'1.1.1', b'1.1.1'), (b'1.3.0', b'1.3.0')]), + field=models.CharField(blank=True, max_length=10, null=True, help_text='WMS Versioning - usually either 1.1.1 or 1.3.0', choices=[(None, ''), ('1.0.0', '1.0.0'), ('1.1.0', '1.1.0'), ('1.1.1', '1.1.1'), ('1.3.0', '1.3.0')]), preserve_default=True, ), ] diff --git a/data_manager/migrations/0018_layer_data_publish_date.py b/data_manager/migrations/0018_layer_data_publish_date.py index 8d29566..fbc588c 100644 --- a/data_manager/migrations/0018_layer_data_publish_date.py +++ b/data_manager/migrations/0018_layer_data_publish_date.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='layer', name='data_publish_date', - field=models.DateField(default=None, null=True, verbose_name=b'Date created/published', blank=True), + field=models.DateField(default=None, null=True, verbose_name='Date created/published', blank=True), preserve_default=True, ), ] diff --git a/data_manager/migrations/0019_auto_20171120_2310.py b/data_manager/migrations/0019_auto_20171120_2310.py index f1a6e61..b70b6fc 100644 --- a/data_manager/migrations/0019_auto_20171120_2310.py +++ b/data_manager/migrations/0019_auto_20171120_2310.py @@ -14,7 +14,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='layer', name='data_publish_date', - field=models.DateField(default=None, help_text=b'YYYY-MM-DD', null=True, verbose_name=b'Date published', blank=True), + field=models.DateField(default=None, help_text='YYYY-MM-DD', null=True, verbose_name='Date published', blank=True), preserve_default=True, ), ] diff --git a/data_manager/migrations/0021_multilayerassociation_multilayerdimension_multilayerdimensionvalue.py b/data_manager/migrations/0021_multilayerassociation_multilayerdimension_multilayerdimensionvalue.py index 153dedd..df9e965 100644 --- a/data_manager/migrations/0021_multilayerassociation_multilayerdimension_multilayerdimensionvalue.py +++ b/data_manager/migrations/0021_multilayerassociation_multilayerdimension_multilayerdimensionvalue.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from django.db import models, migrations +import django.db.models.deletion class Migration(migrations.Migration): @@ -16,7 +17,7 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(max_length=200)), - ('layer', models.ForeignKey(default=None, blank=True, to='data_manager.Layer', null=True)), + ('layer', models.ForeignKey(default=None, blank=True, to='data_manager.Layer', null=True, on_delete=django.db.models.deletion.SET_NULL)), ], options={ }, @@ -26,11 +27,11 @@ class Migration(migrations.Migration): name='MultilayerDimension', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('name', models.CharField(help_text=b'name to be used for selection in admin tool forms', max_length=200)), - ('label', models.CharField(help_text=b'label to be used in mapping tool slider', max_length=50)), - ('order', models.IntegerField(default=100, help_text=b'the order in which this dimension will be presented among other dimensions on this layer')), - ('animated', models.BooleanField(default=False, help_text=b'enable auto-toggling of layers across this dimension')), - ('layer', models.ForeignKey(to='data_manager.Layer')), + ('name', models.CharField(help_text='name to be used for selection in admin tool forms', max_length=200)), + ('label', models.CharField(help_text='label to be used in mapping tool slider', max_length=50)), + ('order', models.IntegerField(default=100, help_text='the order in which this dimension will be presented among other dimensions on this layer')), + ('animated', models.BooleanField(default=False, help_text='enable auto-toggling of layers across this dimension')), + ('layer', models.ForeignKey(to='data_manager.Layer', on_delete=django.db.models.deletion.CASCADE)), ], options={ 'ordering': ('order',), @@ -41,11 +42,11 @@ class Migration(migrations.Migration): name='MultilayerDimensionValue', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('value', models.CharField(help_text=b'Actual value of selection', max_length=200)), - ('label', models.CharField(help_text=b'Label for this selection seen in mapping tool slider', max_length=50)), + ('value', models.CharField(help_text='Actual value of selection', max_length=200)), + ('label', models.CharField(help_text='Label for this selection seen in mapping tool slider', max_length=50)), ('order', models.IntegerField(default=100)), ('associations', models.ManyToManyField(to='data_manager.MultilayerAssociation')), - ('dimension', models.ForeignKey(to='data_manager.MultilayerDimension')), + ('dimension', models.ForeignKey(to='data_manager.MultilayerDimension', on_delete=django.db.models.deletion.CASCADE)), ], options={ 'ordering': ('order',), diff --git a/data_manager/migrations/0022_auto_20180501_2245.py b/data_manager/migrations/0022_auto_20180501_2245.py index fa6a123..aa80b4d 100644 --- a/data_manager/migrations/0022_auto_20180501_2245.py +++ b/data_manager/migrations/0022_auto_20180501_2245.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals from django.db import models, migrations +import django.db.models.deletion class Migration(migrations.Migration): @@ -14,13 +15,13 @@ class Migration(migrations.Migration): migrations.AddField( model_name='multilayerassociation', name='parentLayer', - field=models.ForeignKey(related_name='parent_layer', db_column=b'parentlayer', default=1, to='data_manager.Layer'), + field=models.ForeignKey(related_name='parent_layer', db_column='parentlayer', default=1, to='data_manager.Layer', on_delete=django.db.models.deletion.SET_DEFAULT), preserve_default=False, ), migrations.AlterField( model_name='multilayerassociation', name='layer', - field=models.ForeignKey(related_name='associated_layer', db_column=b'associatedlayer', default=None, blank=True, to='data_manager.Layer', null=True), + field=models.ForeignKey(related_name='associated_layer', db_column='associatedlayer', default=None, blank=True, to='data_manager.Layer', null=True, on_delete=django.db.models.deletion.SET_NULL), preserve_default=True, ), ] diff --git a/data_manager/migrations/0024_auto_20190710_0058.py b/data_manager/migrations/0024_auto_20190710_0058.py new file mode 100644 index 0000000..ffbecf0 --- /dev/null +++ b/data_manager/migrations/0024_auto_20190710_0058.py @@ -0,0 +1,247 @@ +# Generated by Django 2.2.3 on 2019-07-10 00:58 + +import django.contrib.sites.managers +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0023_merge'), + ] + + operations = [ + migrations.AlterModelManagers( + name='layer', + managers=[ + ('objects', django.contrib.sites.managers.CurrentSiteManager('site')), + ], + ), + migrations.AlterModelManagers( + name='theme', + managers=[ + ('objects', django.contrib.sites.managers.CurrentSiteManager('site')), + ], + ), + migrations.AlterField( + model_name='layer', + name='arcgis_layers', + field=models.CharField(blank=True, help_text='comma separated list of arcgis layer IDs', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='attribute_event', + field=models.CharField(choices=[('click', 'click'), ('mouseover', 'mouseover')], default='click', max_length=35), + ), + migrations.AlterField( + model_name='layer', + name='bookmark', + field=models.CharField(blank=True, help_text='link to view data layer in the planner', max_length=755, null=True), + ), + migrations.AlterField( + model_name='layer', + name='connect_companion_layers_to', + field=models.ManyToManyField(blank=True, help_text='Select which main layer(s) you would like to use in conjuction with this companion layer.', null=True, related_name='_layer_connect_companion_layers_to_+', to='data_manager.Layer'), + ), + migrations.AlterField( + model_name='layer', + name='data_download', + field=models.CharField(blank=True, help_text='link to download the data', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='data_publish_date', + field=models.DateField(blank=True, default=None, help_text='YYYY-MM-DD', null=True, verbose_name='Date published'), + ), + migrations.AlterField( + model_name='layer', + name='disable_arcgis_attributes', + field=models.BooleanField(default=False, help_text='Click to disable clickable ArcRest layers'), + ), + migrations.AlterField( + model_name='layer', + name='espis_region', + field=models.CharField(blank=True, choices=[('Mid Atlantic', 'Mid Atlantic')], help_text='Region to search within', max_length=100, null=True), + ), + migrations.AlterField( + model_name='layer', + name='espis_search', + field=models.CharField(blank=True, help_text='keyphrase search for ESPIS Link', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='has_companion', + field=models.BooleanField(default=False, help_text='Check if this layer has a companion layer'), + ), + migrations.AlterField( + model_name='layer', + name='is_disabled', + field=models.BooleanField(default=False, help_text='when disabled, the layer will still appear in the TOC, only disabled'), + ), + migrations.AlterField( + model_name='layer', + name='kml', + field=models.CharField(blank=True, help_text='link to download the KML', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='layer_type', + field=models.CharField(choices=[('XYZ', 'XYZ'), ('WMS', 'WMS'), ('ArcRest', 'ArcRest'), ('radio', 'radio'), ('checkbox', 'checkbox'), ('Vector', 'Vector'), ('placeholder', 'placeholder')], help_text='use placeholder to temporarily remove layer from TOC', max_length=50), + ), + migrations.AlterField( + model_name='layer', + name='learn_more', + field=models.CharField(blank=True, help_text='link to view description in the Learn section', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='legend', + field=models.CharField(blank=True, help_text='URL or path to the legend image file', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='legend_title', + field=models.CharField(blank=True, help_text='alternative to using the layer name', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='map_tiles', + field=models.CharField(blank=True, help_text='internal link to a page that details how others might consume the data', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='metadata', + field=models.CharField(blank=True, help_text='link to view/download the metadata', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='mouseover_field', + field=models.CharField(blank=True, help_text='feature level attribute used in mouseover display', max_length=75, null=True), + ), + migrations.AlterField( + model_name='layer', + name='order', + field=models.PositiveSmallIntegerField(blank=True, default=10, help_text='input an integer to determine the priority/order of the layer being displayed (1 being the highest)', null=True), + ), + migrations.AlterField( + model_name='layer', + name='point_radius', + field=models.IntegerField(blank=True, help_text='Used only for for Point layers (default is 2)', null=True), + ), + migrations.AlterField( + model_name='layer', + name='search_query', + field=models.BooleanField(default=False, help_text='Select when layers are queryable - e.g. MDAT and CAS'), + ), + migrations.AlterField( + model_name='layer', + name='shareable_url', + field=models.BooleanField(default=True, help_text='Indicates whether the data layer (e.g. map tiles) can be shared with others (through the Map Tiles Link)'), + ), + migrations.AlterField( + model_name='layer', + name='source', + field=models.CharField(blank=True, help_text='link back to the data source', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='thumbnail', + field=models.URLField(blank=True, help_text='not sure we are using this any longer...', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='wms_additional', + field=models.TextField(blank=True, help_text='additional WMS key-value pairs: &key=value...', null=True, verbose_name='WMS Additional Fields'), + ), + migrations.AlterField( + model_name='layer', + name='wms_format', + field=models.CharField(blank=True, help_text='most common: image/png. Only image types supported.', max_length=100, null=True, verbose_name='WMS Format'), + ), + migrations.AlterField( + model_name='layer', + name='wms_help', + field=models.BooleanField(default=False, help_text='Enable simple selection for WMS fields. Only supports WMS 1.1.1'), + ), + migrations.AlterField( + model_name='layer', + name='wms_slug', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='WMS Layer Name'), + ), + migrations.AlterField( + model_name='layer', + name='wms_srs', + field=models.CharField(blank=True, help_text='If not EPSG:3857 WMS requests will be proxied', max_length=100, null=True, verbose_name='WMS SRS'), + ), + migrations.AlterField( + model_name='layer', + name='wms_styles', + field=models.CharField(blank=True, help_text='pre-determined styles, if exist', max_length=255, null=True, verbose_name='WMS Styles'), + ), + migrations.AlterField( + model_name='layer', + name='wms_time_item', + field=models.CharField(blank=True, help_text='Time Attribute Field, if different from "TIME". Proxy only.', max_length=255, null=True, verbose_name='WMS Time Field'), + ), + migrations.AlterField( + model_name='layer', + name='wms_timing', + field=models.CharField(blank=True, help_text='http://docs.geoserver.org/stable/en/user/services/wms/time.html#specifying-a-time', max_length=255, null=True, verbose_name='WMS Time'), + ), + migrations.AlterField( + model_name='layer', + name='wms_version', + field=models.CharField(blank=True, choices=[(None, ''), ('1.0.0', '1.0.0'), ('1.1.0', '1.1.0'), ('1.1.1', '1.1.1'), ('1.3.0', '1.3.0')], help_text='WMS Versioning - usually either 1.1.1 or 1.3.0', max_length=10, null=True), + ), + migrations.AlterField( + model_name='lookupinfo', + name='dashstyle', + field=models.CharField(choices=[('dot', 'dot'), ('dash', 'dash'), ('dashdot', 'dashdot'), ('longdash', 'longdash'), ('longdashdot', 'longdashdot'), ('solid', 'solid')], default='solid', max_length=11), + ), + migrations.AlterField( + model_name='multilayerassociation', + name='layer', + field=models.ForeignKey(blank=True, db_column='associatedlayer', default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='associated_layer', to='data_manager.Layer'), + ), + migrations.AlterField( + model_name='multilayerassociation', + name='parentLayer', + field=models.ForeignKey(db_column='parentlayer', on_delete=django.db.models.deletion.CASCADE, related_name='parent_layer', to='data_manager.Layer'), + ), + migrations.AlterField( + model_name='multilayerdimension', + name='animated', + field=models.BooleanField(default=False, help_text='enable auto-toggling of layers across this dimension'), + ), + migrations.AlterField( + model_name='multilayerdimension', + name='label', + field=models.CharField(help_text='label to be used in mapping tool slider', max_length=50), + ), + migrations.AlterField( + model_name='multilayerdimension', + name='name', + field=models.CharField(help_text='name to be used for selection in admin tool forms', max_length=200), + ), + migrations.AlterField( + model_name='multilayerdimension', + name='order', + field=models.IntegerField(default=100, help_text='the order in which this dimension will be presented among other dimensions on this layer'), + ), + migrations.AlterField( + model_name='multilayerdimensionvalue', + name='label', + field=models.CharField(help_text='Label for this selection seen in mapping tool slider', max_length=50), + ), + migrations.AlterField( + model_name='multilayerdimensionvalue', + name='value', + field=models.CharField(help_text='Actual value of selection', max_length=200), + ), + migrations.AlterField( + model_name='theme', + name='order', + field=models.PositiveSmallIntegerField(blank=True, default=10, help_text='input an integer to determine the priority/order of the layer being displayed (1 being the highest)', null=True), + ), + ] From a9030ca2a25a24fa0e2489134289c72043d5ddd4 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Wed, 10 Jul 2019 16:04:33 -0700 Subject: [PATCH 009/127] fixing changed field names to prevent errors when installing on new, updated wagtail instances --- data_manager/migrations/0001_initial.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_manager/migrations/0001_initial.py b/data_manager/migrations/0001_initial.py index 1d6e121..677901b 100644 --- a/data_manager/migrations/0001_initial.py +++ b/data_manager/migrations/0001_initial.py @@ -109,11 +109,11 @@ class Migration(migrations.Migration): ('name', models.CharField(max_length=100)), ('visible', models.BooleanField(default=True)), ('header_image', models.CharField(max_length=255, null=True, blank=True)), - ('header_attri', models.CharField(max_length=255, null=True, blank=True)), + ('header_attrib', models.CharField(max_length=255, null=True, blank=True)), ('overview', models.TextField(null=True, blank=True)), ('description', models.TextField(null=True, blank=True)), ('thumbnail', models.URLField(max_length=255, null=True, blank=True)), - ('factsheet_thum', models.CharField(max_length=255, null=True, blank=True)), + ('factsheet_thumb', models.CharField(max_length=255, null=True, blank=True)), ('factsheet_link', models.CharField(max_length=255, null=True, blank=True)), ('feature_image', models.CharField(max_length=255, null=True, blank=True)), ('feature_excerpt', models.TextField(null=True, blank=True)), From cdebcc2365c78861ebee37a6e2fb01a2d9f57f43 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Wed, 10 Jul 2019 16:06:32 -0700 Subject: [PATCH 010/127] updating model definitions to prevent warning messages --- .../migrations/0025_auto_20190710_2305.py | 43 +++++++++++++++++++ data_manager/models.py | 12 +++--- 2 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 data_manager/migrations/0025_auto_20190710_2305.py diff --git a/data_manager/migrations/0025_auto_20190710_2305.py b/data_manager/migrations/0025_auto_20190710_2305.py new file mode 100644 index 0000000..75fc2ff --- /dev/null +++ b/data_manager/migrations/0025_auto_20190710_2305.py @@ -0,0 +1,43 @@ +# Generated by Django 2.2.3 on 2019-07-10 23:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0024_auto_20190710_0058'), + ] + + operations = [ + migrations.AlterField( + model_name='dataneed', + name='themes', + field=models.ManyToManyField(blank=True, to='data_manager.Theme'), + ), + migrations.AlterField( + model_name='layer', + name='attribute_fields', + field=models.ManyToManyField(blank=True, to='data_manager.AttributeInfo'), + ), + migrations.AlterField( + model_name='layer', + name='connect_companion_layers_to', + field=models.ManyToManyField(blank=True, help_text='Select which main layer(s) you would like to use in conjuction with this companion layer.', related_name='_layer_connect_companion_layers_to_+', to='data_manager.Layer'), + ), + migrations.AlterField( + model_name='layer', + name='lookup_table', + field=models.ManyToManyField(blank=True, to='data_manager.LookupInfo'), + ), + migrations.AlterField( + model_name='layer', + name='sublayers', + field=models.ManyToManyField(blank=True, related_name='_layer_sublayers_+', to='data_manager.Layer'), + ), + migrations.AlterField( + model_name='layer', + name='themes', + field=models.ManyToManyField(blank=True, to='data_manager.Theme'), + ), + ] diff --git a/data_manager/models.py b/data_manager/models.py index 08a21c4..0117afc 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -147,11 +147,11 @@ class Layer(models.Model, SiteFlags): wms_time_item = models.CharField(max_length=255, blank=True, null=True, help_text='Time Attribute Field, if different from "TIME". Proxy only.', verbose_name='WMS Time Field') wms_additional = models.TextField(blank=True, null=True, help_text='additional WMS key-value pairs: &key=value...', verbose_name='WMS Additional Fields') is_sublayer = models.BooleanField(default=False) - sublayers = models.ManyToManyField('self', blank=True, null=True) - themes = models.ManyToManyField("Theme", blank=True, null=True) + sublayers = models.ManyToManyField('self', blank=True) + themes = models.ManyToManyField("Theme", blank=True) search_query = models.BooleanField(default=False, help_text='Select when layers are queryable - e.g. MDAT and CAS') has_companion = models.BooleanField(default=False, help_text='Check if this layer has a companion layer') - connect_companion_layers_to = models.ManyToManyField('self', blank=True, null=True, help_text='Select which main layer(s) you would like to use in conjuction with this companion layer.') + connect_companion_layers_to = models.ManyToManyField('self', blank=True, help_text='Select which main layer(s) you would like to use in conjuction with this companion layer.') is_disabled = models.BooleanField(default=False, help_text='when disabled, the layer will still appear in the TOC, only disabled') disabled_message = models.CharField(max_length=255, blank=True, null=True) legend = models.CharField(max_length=255, blank=True, null=True, help_text='URL or path to the legend image file') @@ -183,12 +183,12 @@ class Layer(models.Model, SiteFlags): ('click', 'click'), ('mouseover', 'mouseover') ) - attribute_fields = models.ManyToManyField('AttributeInfo', blank=True, null=True) + attribute_fields = models.ManyToManyField('AttributeInfo', blank=True) compress_display = models.BooleanField(default=False) attribute_event = models.CharField(max_length=35, choices=EVENT_CHOICES, default='click') mouseover_field = models.CharField(max_length=75, blank=True, null=True, help_text='feature level attribute used in mouseover display') lookup_field = models.CharField(max_length=255, blank=True, null=True) - lookup_table = models.ManyToManyField('LookupInfo', blank=True, null=True) + lookup_table = models.ManyToManyField('LookupInfo', blank=True) is_annotated = models.BooleanField(default=False) vector_outline_color = models.CharField(max_length=7, blank=True, null=True) vector_outline_opacity = models.FloatField(blank=True, null=True) @@ -683,7 +683,7 @@ class DataNeed(models.Model): contact_email = models.CharField(max_length=255, blank=True, null=True) expected_date = models.CharField(max_length=255, blank=True, null=True) notes = models.TextField(blank=True, null=True) - themes = models.ManyToManyField("Theme", blank=True, null=True) + themes = models.ManyToManyField("Theme", blank=True) @property def html_name(self): From 9874f9978b00fd8d7ff397d98fd1f3e16d3326bb Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Thu, 18 Jul 2019 17:10:27 -0700 Subject: [PATCH 011/127] minor py3 and dj2 updates --- data_manager/admin.py | 9 ++++----- data_manager/models.py | 3 +++ data_manager/settings.py | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/data_manager/admin.py b/data_manager/admin.py index 9963919..83ec7e6 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -198,8 +198,8 @@ class LayerAdmin(ImportExportMixin, nested_admin.NestedModelAdmin): NestedMultilayerDimensionInline, ] - from django.conf import settings - BASE_DIR = settings.BASE_DIR + from . import settings as data_manager_settings + BASE_DIR = data_manager_settings.DATA_MANAGER_BASE_DIR add_form_template = '%s/data_manager/templates/admin/LayerForm.html' % BASE_DIR change_form_template = '%s/data_manager/templates/admin/LayerForm.html' % BASE_DIR @@ -231,9 +231,8 @@ def add_view(self, request, form_url='', extra_context={}): return super(LayerAdmin, self).add_view(request, form_url, extra_context) # Edit Layer Form - def change_view(self, request, id=None, extra_context={}): - # extra_context['test'] = 'BAR' - return super(LayerAdmin, self).change_view(request, id, extra_context=extra_context) + def change_view(self, request, object_id, extra_context={}): + return super(LayerAdmin, self).change_view(request, object_id, extra_context=extra_context) def get_queryset(self, request): # use our manager, rather than the default one diff --git a/data_manager/models.py b/data_manager/models.py index 0117afc..1614473 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -78,6 +78,9 @@ def url(self): def __unicode__(self): return unicode('%s' % (self.name)) + def __str__(self): + return self.name + @property def learn_link(self): domain = get_domain(8000) diff --git a/data_manager/settings.py b/data_manager/settings.py index 0a63fc1..69bba47 100644 --- a/data_manager/settings.py +++ b/data_manager/settings.py @@ -1,2 +1,2 @@ import os -BASE_DIR = os.path.dirname(os.path.dirname(__file__)) +DATA_MANAGER_BASE_DIR = os.path.dirname(os.path.dirname(__file__)) From e15408224e715afdafb01b4ee9757a54908031dc Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Wed, 24 Jul 2019 17:29:32 -0700 Subject: [PATCH 012/127] updating models to provide __str__ for py3 compatibility --- data_manager/models.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/data_manager/models.py b/data_manager/models.py index 1614473..013ecb5 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -79,7 +79,7 @@ def __unicode__(self): return unicode('%s' % (self.name)) def __str__(self): - return self.name + return str(self.name) @property def learn_link(self): @@ -216,6 +216,9 @@ class Layer(models.Model, SiteFlags): def __unicode__(self): return unicode('%s' % (self.name)) + def __str__(self): + return str(self.name) + @property def is_parent(self): return self.sublayers.all().count() > 0 and not self.is_sublayer @@ -658,6 +661,9 @@ class AttributeInfo(models.Model): def __unicode__(self): return unicode('%s' % (self.field_name)) + def __str__(self): + return str(self.field_name) + class LookupInfo(models.Model): DASH_CHOICES = ( ('dot', 'dot'), @@ -676,6 +682,9 @@ class LookupInfo(models.Model): def __unicode__(self): return unicode('%s' % (self.value)) + def __str__(self): + return str(self.value) + class DataNeed(models.Model): name = models.CharField(max_length=100) archived = models.BooleanField(default=False) @@ -695,6 +704,9 @@ def html_name(self): def __unicode__(self): return unicode('%s' % (self.name)) + def __str__(self): + return str(self.name) + class MultilayerDimension(models.Model): name = models.CharField(max_length=200, help_text='name to be used for selection in admin tool forms') label = models.CharField(max_length=50, help_text='label to be used in mapping tool slider') @@ -706,7 +718,7 @@ def __unicode__(self): return self.name def __str__(self): - return self.name + return str(self.name) class Meta: ordering = ('order',) @@ -735,7 +747,7 @@ def __unicode__(self): return self.name def __str__(self): - return self.name + return str(self.name) # def save(self, *args, **kwargs): # super(MultilayerAssociation, self).save(*args, **kwargs) From b21bbb503c27d1a877bdec356111e78ca257f9d0 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Thu, 25 Jul 2019 19:02:34 -0700 Subject: [PATCH 013/127] adding support for querying WMS layers for feature info --- data_manager/admin.py | 1 + .../migrations/0026_auto_20190725_2149.py | 23 ++++++++++++ data_manager/models.py | 8 +++++ .../static/data_manager/js/layer_form.js | 36 ++++++++++++++++++- data_manager/templates/admin/LayerForm.html | 7 ++-- data_manager/views.py | 26 +++++++++++++- 6 files changed, 96 insertions(+), 5 deletions(-) create mode 100644 data_manager/migrations/0026_auto_20190725_2149.py diff --git a/data_manager/admin.py b/data_manager/admin.py index 83ec7e6..115fb06 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -150,6 +150,7 @@ class LayerAdmin(ImportExportMixin, nested_admin.NestedModelAdmin): ('wms_format', 'wms_srs'), ('wms_timing', 'wms_time_item'), ('wms_styles', 'wms_additional'), + ('wms_info', 'wms_info_format'), ) }), ('Dynamic Layers (MDAT & CAS)', { diff --git a/data_manager/migrations/0026_auto_20190725_2149.py b/data_manager/migrations/0026_auto_20190725_2149.py new file mode 100644 index 0000000..249fb1e --- /dev/null +++ b/data_manager/migrations/0026_auto_20190725_2149.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.3 on 2019-07-25 21:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0025_auto_20190710_2305'), + ] + + operations = [ + migrations.AddField( + model_name='layer', + name='wms_info', + field=models.BooleanField(default=False, help_text='enable Feature Info requests on click'), + ), + migrations.AddField( + model_name='layer', + name='wms_info_format', + field=models.CharField(blank=True, default=None, help_text='Available supported feature info formats', max_length=255, null=True), + ), + ] diff --git a/data_manager/models.py b/data_manager/models.py index 013ecb5..ca6ec61 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -149,6 +149,8 @@ class Layer(models.Model, SiteFlags): wms_timing = models.CharField(max_length=255, blank=True, null=True, help_text='http://docs.geoserver.org/stable/en/user/services/wms/time.html#specifying-a-time', verbose_name='WMS Time') wms_time_item = models.CharField(max_length=255, blank=True, null=True, help_text='Time Attribute Field, if different from "TIME". Proxy only.', verbose_name='WMS Time Field') wms_additional = models.TextField(blank=True, null=True, help_text='additional WMS key-value pairs: &key=value...', verbose_name='WMS Additional Fields') + wms_info = models.BooleanField(default=False, help_text='enable Feature Info requests on click') + wms_info_format = models.CharField(max_length=255, blank=True, null=True, default=None, help_text='Available supported feature info formats') is_sublayer = models.BooleanField(default=False) sublayers = models.ManyToManyField('self', blank=True) themes = models.ManyToManyField("Theme", blank=True) @@ -469,6 +471,8 @@ def toDict(self, site_id=None): 'wms_timing': layer.wms_timing, 'wms_time_item': layer.wms_time_item, 'wms_additional': layer.wms_additional, + 'wms_info': layer.wms_info, + 'wms_info_format': layer.wms_info_format, 'utfurl': layer.utfurl, 'parent': self.id, 'legend': layer.legend, @@ -522,6 +526,8 @@ def toDict(self, site_id=None): 'wms_timing': layer.wms_timing, 'wms_time_item': layer.wms_time_item, 'wms_additional': layer.wms_additional, + 'wms_info': layer.wms_info, + 'wms_info_format': layer.wms_info_format, 'utfurl': layer.utfurl, 'parent': self.id, 'legend': layer.legend, @@ -574,6 +580,8 @@ def toDict(self, site_id=None): 'wms_timing': self.wms_timing, 'wms_time_item': self.wms_time_item, 'wms_additional': self.wms_additional, + 'wms_info': self.wms_info, + 'wms_info_format': self.wms_info_format, 'utfurl': self.utfurl, 'subLayers': sublayers, 'companion_layers': connect_companion_layers_to, diff --git a/data_manager/static/data_manager/js/layer_form.js b/data_manager/static/data_manager/js/layer_form.js index e557fcd..4d25f87 100644 --- a/data_manager/static/data_manager/js/layer_form.js +++ b/data_manager/static/data_manager/js/layer_form.js @@ -93,7 +93,7 @@ show_layertype_form = function(layertype) { } style_html += ''; $('#id_wms_styles').replaceWith(style_html); - if (data.styles[slug_val].indexOf(style_val) >= 0) { + if (Object.keys(data.styles[slug_val]).indexOf(style_val) >= 0) { $('#id_wms_styles').val(style_val); } } @@ -120,6 +120,40 @@ show_layertype_form = function(layertype) { } } + /* CAPABILITIES */ + if (Object.keys(data.capabilities).length > 0) { + var info_bool_field = $('#id_wms_info'); + var info_format_field = $('#id_wms_info_format'); + if (data.capabilities.hasOwnProperty('featureInfo') && data.capabilities.featureInfo.available) { + $('.form-row.field-wms_info.field-wms_info_format').show(); + info_format_field.prop('disabled', false); + info_bool_field.prop('disabled', false); + + var info_formats = data.capabilities.featureInfo.formats; + var info_format_val = info_format_field.val(); + var info_format_html = ''; + info_format_field.replaceWith(info_format_html); + + if (info_formats.indexOf(info_format_val) >= 0) { + $('#id_wms_info_format').val(info_format_val); + } + + } else { + // set featureInfo to false, hide section + info_bool_field.prop('checked', false); + info_bool_field.prop('disabled', true); + info_format_field.val(null); + info_format_field.prop('disabled', true); + $('.form-row.field-wms_info.field-wms_info_format').hide(); + } + } + }, error: function(data) { url = $('#id_url').val(); diff --git a/data_manager/templates/admin/LayerForm.html b/data_manager/templates/admin/LayerForm.html index 0f794f9..175b63f 100644 --- a/data_manager/templates/admin/LayerForm.html +++ b/data_manager/templates/admin/LayerForm.html @@ -1,10 +1,11 @@ {% extends "admin/change_form.html" %} +{% load static %} {% block extrahead %} {{ block.super }} - - - + + + {% endblock %} {% block field_sets %} diff --git a/data_manager/views.py b/data_manager/views.py index b8c8422..2ca9339 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -161,6 +161,22 @@ def wms_get_capabilities(url): if key in new_layer_dict.keys(): layers[key] = new_layer_dict[key] + available_formats = [] + if root.find('Capability') and root.find('Capability').find('Request'): + getFeatureInfo = root.find('Capability').find('Request').find('GetFeatureInfo') + if getFeatureInfo: + accepted_formats = [ + 'text/plain', + 'text/html', + 'text/xml', + 'image/png', + 'application/json', + 'text/javascript', #JSONP + ] + for format_type in getFeatureInfo.findall('Format'): + if format_type.text in accepted_formats: + available_formats.append(format_type.text) + except: # trouble parsing raw xml @@ -207,13 +223,21 @@ def wms_get_capabilities(url): 'field': timefield } + capabilities = {} + if available_formats and len(available_formats) > 0: + capabilities['featureInfo'] = { + 'available': True, + 'formats': available_formats + } + result = { - 'layers': layers.keys(), + 'layers': list(layers.keys()), 'formats': wms.getOperationByName('GetMap').formatOptions, 'version': wms.version, 'styles': styles, 'srs': srs_opts, 'time': times, + 'capabilities': capabilities, } return result From 6409ba2f49bb0074b19761d59debb2c58f334598 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Mon, 29 Jul 2019 18:45:02 -0700 Subject: [PATCH 014/127] updates to support integration with WCOA data --- ...WC_MP_formatted_data_manager_20190729.json | 11401 ++++++++++++++++ .../migrations/0027_auto_20190730_0022.py | 118 + data_manager/models.py | 57 +- data_manager/views.py | 5 +- 4 files changed, 11558 insertions(+), 23 deletions(-) create mode 100644 data_manager/fixtures/WC_MP_formatted_data_manager_20190729.json create mode 100644 data_manager/migrations/0027_auto_20190730_0022.py diff --git a/data_manager/fixtures/WC_MP_formatted_data_manager_20190729.json b/data_manager/fixtures/WC_MP_formatted_data_manager_20190729.json new file mode 100644 index 0000000..ef89bbf --- /dev/null +++ b/data_manager/fixtures/WC_MP_formatted_data_manager_20190729.json @@ -0,0 +1,11401 @@ +[ +{ + "model": "data_manager.theme", + "pk": 9, + "fields": { + "display_name": "Biological", + "name": "Biological", + "header_image": "", + "header_attrib": "", + "overview": "", + "description": "", + "thumbnail": "", + "factsheet_thumb": "", + "factsheet_link": "", + "feature_image": "", + "feature_excerpt": "", + "feature_link": "" + } +}, +{ + "model": "data_manager.theme", + "pk": 10, + "fields": { + "display_name": "Human", + "name": "Human", + "header_image": "", + "header_attrib": "", + "overview": "", + "description": "", + "thumbnail": "", + "factsheet_thumb": "", + "factsheet_link": "", + "feature_image": "", + "feature_excerpt": "", + "feature_link": "" + } +}, +{ + "model": "data_manager.theme", + "pk": 11, + "fields": { + "display_name": "Physical", + "name": "Physical", + "header_image": "", + "header_attrib": "", + "overview": "", + "description": "", + "thumbnail": "", + "factsheet_thumb": "", + "factsheet_link": "", + "feature_image": "", + "feature_excerpt": "", + "feature_link": "" + } +}, +{ + "model": "data_manager.theme", + "pk": 12, + "fields": { + "display_name": "WCGA Priority Issues", + "name": "WCGA Priority Issues", + "header_image": "", + "header_attrib": "", + "overview": "", + "description": "", + "thumbnail": "", + "factsheet_thumb": "", + "factsheet_link": "", + "feature_image": "", + "feature_excerpt": "", + "feature_link": "" + } +}, +{ + "model": "data_manager.theme", + "pk": 13, + "fields": { + "display_name": "RPB Subregions", + "name": "RPB Subregions", + "header_image": "", + "header_attrib": "", + "overview": "", + "description": "", + "thumbnail": "", + "factsheet_thumb": "", + "factsheet_link": "", + "feature_image": "", + "feature_excerpt": "", + "feature_link": "" + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 60, + "fields": { + "display_name": "Vulnerability", + "field_name": "CVI", + "precision": null, + "order": 1 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 61, + "fields": { + "display_name": "Tide", + "field_name": "TIDE", + "precision": null, + "order": 2 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 62, + "fields": { + "display_name": "Waves", + "field_name": "WAVES", + "precision": null, + "order": 3 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 63, + "fields": { + "display_name": "Erosion", + "field_name": "EROSION", + "precision": null, + "order": 4 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 64, + "fields": { + "display_name": "Sea Level", + "field_name": "SEALEVEL", + "precision": null, + "order": 5 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 65, + "fields": { + "display_name": "Geomorphology", + "field_name": "GEOMORPHOL", + "precision": null, + "order": 6 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 66, + "fields": { + "display_name": "Slope", + "field_name": "SLOPE", + "precision": null, + "order": 7 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 67, + "fields": { + "display_name": "Speed (m/s)", + "field_name": "SPEED_90", + "precision": 3, + "order": 1 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 98, + "fields": { + "display_name": "Min Wind Speed", + "field_name": "WINDREV_MI", + "precision": 1, + "order": 5 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 99, + "fields": { + "display_name": "Max Wind Speed", + "field_name": "WINDREV_MA", + "precision": 1, + "order": 6 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 115, + "fields": { + "display_name": "Number of Shipwrecks", + "field_name": "FREQUENCY", + "precision": null, + "order": 1 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 120, + "fields": { + "display_name": "", + "field_name": "descriptio", + "precision": null, + "order": 1 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 121, + "fields": { + "display_name": "Source Date", + "field_name": "sourceDate", + "precision": null, + "order": 2 + } +}, +{ + "model": "data_manager.attributeinfo", + "pk": 123, + "fields": { + "display_name": "", + "field_name": "NAME", + "precision": null, + "order": 1 + } +}, +{ + "model": "data_manager.layer", + "pk": 157, + "fields": { + "name": "Unexploded Ordinances (NOAA, 2014)", + "slug_name": "unexploded-ordinances-noaa-2014", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/NavigationAndMarineTransportation/MapServer/export", + "shareable_url": true, + "arcgis_layers": "9", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "BC465F4B-9CE0-4A97-9DCE-177CC97C089E", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/UnexplodedOrdnances.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={139DE5DB-B2BC-4B64-860A-D112030FDF08}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 158, + "fields": { + "name": "Oregon Depth Contours (ATSML, 2012)", + "slug_name": "oregon-depth-contours-atsml-2012", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "ATSML_OR_25M_Depth_Contour", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 163, + "fields": { + "name": "Coastal Vulnerability - OR (USGS, 2001)", + "slug_name": "coastal-vulnerability-or-usgs-2001", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "Vulnerability_SL_Rise_USGS_2001", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 168, + "fields": { + "name": "Critical Habitat Designations (NOAA, 2014)", + "slug_name": "critical-habitat-designations-noaa-2014", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "10", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "723A4093-F601-4ADC-877F-EBF4856A721C", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/CriticalHabitatDesignations.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={4D25EF16-CC34-4841-8B2D-FA160832044D}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 170, + "fields": { + "name": "Cargo Vessel Density (NOAA, 2013)", + "slug_name": "cargo-vessel-density-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/2013CargoVesselDensity/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "B482E5CA-AE69-417D-839E-41D3E6E14E68", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/2013AIS/VesselDensityCargo2013.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={B482E5CA-AE69-417D-839E-41D3E6E14E68}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 171, + "fields": { + "name": "Aids to Navigation (USCG, 2014)", + "slug_name": "aids-to-navigation-uscg-2014", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/NavigationAndMarineTransportation/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "9FA260CF-E353-49E4-B8FF-056F0E53535B", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/AidsToNavigation.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={E9E5F003-70CE-49EF-BAF4-1325BE74FD8C}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 172, + "fields": { + "name": "Submarine Cables (NOAA, 2012)", + "slug_name": "submarine-cables-noaa-2012", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/NavigationAndMarineTransportation/MapServer/export", + "shareable_url": true, + "arcgis_layers": "4", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "B26E469B-4DBA-4494-8A87-BFEBD6B4B081", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/SubmarineCables.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={B26E469B-4DBA-4494-8A87-BFEBD6B4B081}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 173, + "fields": { + "name": "Shipping Lanes and Fairways (NOAA, 2013) ", + "slug_name": "shipping-lanes-and-fairways-noaa-2013", + "layer_type": "ArcRest", + "url": "http://encdirect.noaa.gov/arcgis/rest/services/NavigationChartData/MarineTransportation/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "AE3ECF82-6B96-40D0-9A47-3C973EE3E611", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://encdirect.noaa.gov/theme_layers/data/shipping_lanes/shippinglanes.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={105BFC6E-D6CE-497D-83FD-C323968E32A5}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 174, + "fields": { + "name": "U.S Maritime Boundaries (NOAA, 2014)", + "slug_name": "us-maritime-boundaries-noaa-2014", + "layer_type": "ArcRest", + "url": "http://maritimeboundaries.noaa.gov/arcgis/rest/services/MaritimeBoundaries/US_Maritime_Limits_Boundaries/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "89FFA1F0-F16E-44CD-8F49-E0EA8C3E3D00", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://maritimeboundaries.noaa.gov/downloads/USMaritimeLimitsAndBoundariesSHP.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={89FFA1F0-F16E-44CD-8F49-E0EA8C3E3D00}", + "source": "http://marinecadastre.gov/data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 175, + "fields": { + "name": "MPA Inventory (NOAA, 2013)", + "slug_name": "mpa-inventory-noaa-2013", + "layer_type": "ArcRest", + "url": "https://idpgis.ncep.noaa.gov/arcgis/rest/services/NOAA/MPA_Inventory/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "0F1F889C-4380-40B1-8EE2-2BE7420A0C62", + "description": "The MPA Inventory is a comprehensive catalog that provides detailed information for existing marine protected areas in the United States. The inventory provides geospatial boundary information (in polygon format) and classification attributes that seek to define the conservation objectives, protection level, governance and related management criteria for all sites in the database. The comprehensive inventory of federal, state and territorial MPA sites provides governments and stakeholders with access to information to make better decisions about the current and future use of place-based conservation. The information also will be used to inform the development of the national system of marine protected areas as required by Executive Order 13158.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://marineprotectedareas.noaa.gov/pdf/helpful-resources/inventory/mpa_inventory_2013_public_shp.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={0F1F889C-4380-40B1-8EE2-2BE7420A0C62}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 178, + "fields": { + "name": "American Indian Trust Lands (USCB, 2010)", + "slug_name": "american-indian-trust-lands-uscb-2010", + "layer_type": "ArcRest", + "url": "http://tigerweb.geo.census.gov/ArcGIS/rest/services/tigerWMS_Census2010/MapServer/export", + "shareable_url": true, + "arcgis_layers": "42", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp2.census.gov/geo/tiger/TIGER2010/TTRACT/2010/tl_2010_us_ttract10.zip", + "metadata": "", + "source": "https://www.census.gov/en.html", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 180, + "fields": { + "name": "Counties (USCB, 2010)", + "slug_name": "counties-uscb-2010", + "layer_type": "ArcRest", + "url": "http://tigerweb.geo.census.gov/arcgis/rest/services/TIGERweb/tigerWMS_Census2010/MapServer/export", + "shareable_url": true, + "arcgis_layers": "100", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "ACE17976-C10D-4D9D-ABFD-E4EAD194A04F", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp2.census.gov/geo/tiger/TIGER2010/COUNTY/2010/tl_2010_us_county10.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={ACE17976-C10D-4D9D-ABFD-E4EAD194A04F}", + "source": "http://www.census.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 182, + "fields": { + "name": "National Hydrography Dataset (USGS, 2014)", + "slug_name": "national-hydrography-dataset-usgs-2014", + "layer_type": "ArcRest", + "url": "http://basemap.nationalmap.gov/arcgis/rest/services/USGSHydroNHD/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={55B78618-4712-4C93-A075-BA02A28F062D}", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://nhdftp.usgs.gov/DataSets/Staged/States/FileGDB/", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={55B78618-4712-4C93-A075-BA02A28F062D}", + "source": "http://nhd.usgs.gov/data.html", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 309 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 184, + "fields": { + "name": "Environmental Sensitivity Index - Aggregate (NOAA, 2013)", + "slug_name": "environmental-sensitivity-index-aggregate-noaa-2013", + "layer_type": "ArcRest", + "url": "https://idpgis.ncep.noaa.gov/arcgis/rest/services/NOS_ESI/ESI_Shoreline_Aggregate/MapServer/export", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": true, + "legend": "https://idpgis.ncep.noaa.gov/arcgis/rest/services/NOS_ESI/ESI_Shoreline_Aggregate/MapServer/legend", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "53AC8E9F-CC37-44AC-81B0-3F0E3E8265DA", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={53AC8E9F-CC37-44AC-81B0-3F0E3E8265DA}", + "source": "http://response.restoration.noaa.gov/maps-and-spatial-data/environmental-sensitivity-index-esi-maps.html", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 191, + "fields": { + "name": "Dams (USGS, 2006)", + "slug_name": "dams-usgs-2006", + "layer_type": "WMS", + "url": "http://webservices.nationalatlas.gov/wms/water?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "dams", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://dds.cr.usgs.gov/pub/data/nationalatlas/dams00x020_nt00010.tar.gz", + "metadata": "http://www.nationalatlas.gov/metadata/dams00x020.xml", + "source": "http://www.nationalatlas.gov/index.html", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 193, + "fields": { + "name": "Seafloor Induration - California (ATSML, 2013)", + "slug_name": "seafloor-induration-california-atsml-2013", + "layer_type": "ArcRest", + "url": "http://hornet.coas.oregonstate.edu/arcgis/rest/services/habitat/V1_Seafloor_Induration_CA/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 257, + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 194, + "fields": { + "name": "Seafloor Physiography (ATSML, 2014)", + "slug_name": "seafloor-physiography-atsml-2014", + "layer_type": "ArcRest", + "url": "http://hornet.coas.oregonstate.edu/arcgis/rest/services/habitat/V4_Physiographic_Habitat_WA_OR_NCA/MapServer/export", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "738A0937-3552-4C13-BF70-63F2C3679971", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={738A0937-3552-4C13-BF70-63F2C3679971}", + "source": "http://activetectonics.coas.oregonstate.edu/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 257 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 197, + "fields": { + "name": "Groundfish Essential Fish Habitat (NOAA, 2013)", + "slug_name": "groundfish-essential-fish-habitat-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "12", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 198, + "fields": { + "name": "ESA Critical Habitat Designations (USFWS, XX)", + "slug_name": "esa-critical-habitat-designations-usfws-xx", + "layer_type": "ArcRest", + "url": "http://coast.noaa.gov/arcgis/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "9", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 200, + "fields": { + "name": "Ports (USGS, 2001)", + "slug_name": "ports-usgs-2001", + "layer_type": "WMS", + "url": "http://webservices.nationalatlas.gov/wms/", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "ports1m", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": null, + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 201, + "fields": { + "name": "Streams and Waterbodies (USGS, 2005)", + "slug_name": "streams-and-waterbodies-usgs-2005", + "layer_type": "WMS", + "url": "http://webservices.nationalatlas.gov/wms/", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "lakesrivers", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "BF238FA3-756B-4893-B664-589153F4C44A", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://dds.cr.usgs.gov/pub/data/nationalatlas/hydrogm020_nt00015.tar.gz", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/catalog/publication/downloadMetadata.jsp?uuid={BF238FA3-756B-4893-B664-589153F4C44A}&option=view", + "source": "http://www.nationalatlas.gov/maplayers.html", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 309 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 204, + "fields": { + "name": "West Coast EFH Conservation Areas (NOAA, 2016) ", + "slug_name": "west-coast-efh-conservation-areas-noaa-2016", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "12", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "6EE094EE-66F2-4135-8B62-1DA653915BDC", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.westcoast.fisheries.noaa.gov/publications/gis_maps/gis_data/salmon_steelhead/efh/efhgroundfish.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={6EE094EE-66F2-4135-8B62-1DA653915BDC}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249, + 254 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 205, + "fields": { + "name": "Essential Fish Habitat - Habitat Areas of Particular Concern (NOAA, 2014)", + "slug_name": "essential-fish-habitat-habitat-areas-of-particular-concern-noaa-2014", + "layer_type": "ArcRest", + "url": "https://idpgis.ncep.noaa.gov/arcgis/rest/services/NMFS/HAPC/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "8B6EDC62-ED44-44C6-8F97-D1390A1753AA", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249, + 254 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 206, + "fields": { + "name": "MPA Inventory - Fishing Restrictions (NOAA, 2013)", + "slug_name": "mpa-inventory-fishing-restrictions-noaa-2013", + "layer_type": "ArcRest", + "url": "https://idpgis.ncep.noaa.gov/arcgis/rest/services/NOAA/MPA_Inventory_Fishing/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "0C9AB742-CF88-4FC3-8EF3-3C75C0AA7D7C", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://marineprotectedareas.noaa.gov/pdf/helpful-resources/inventory/mpa_inventory_2013_public_shp.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={0F1F889C-4380-40B1-8EE2-2BE7420A0C62}", + "source": "http://marinecadastre.gov", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 209, + "fields": { + "name": "Passenger Vessel Density (NOAA, 2013)", + "slug_name": "passenger-vessel-density-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/2013PassengerVesselDensity/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "AAD636C3-D081-4E31-A597-983485B7806F", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/2011AIS/WestCoastPassengerVesselDensity2011.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={AAD636C3-D081-4E31-A597-983485B7806F}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 210, + "fields": { + "name": "State Marine Life Refuges - CA (CDFW, 2013)", + "slug_name": "state-marine-life-refuges-ca-cdfw-2013", + "layer_type": "ArcRest", + "url": "https://map.dfg.ca.gov/arcgis/rest/services/Project_Marine/Marine_Management/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": null, + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 211, + "fields": { + "name": "Tug and Towing Vessel Density (NOAA, 2013)", + "slug_name": "tug-and-towing-vessel-density-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/2013TugTowingVesselDensity/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "D444BD3B-85AB-4698-B822-568416EC60B6", + "description": "This dataset represents the density of tug and towing vessel traffic in 2013 for the contiguous United States offshore waters from tug and towing vessels with AIS transponders in 100 meter grid cells. The dataset is best interpreted using a high to low density scale and does not represent actual vessel counts.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/2013AIS/VesselDensityTugTowing2013.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={D444BD3B-85AB-4698-B822-568416EC60B6}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 212, + "fields": { + "name": "Permitted Discharge Outfalls - CA (NPDES, XX)", + "slug_name": "permitted-discharge-outfalls-ca-npdes-xx", + "layer_type": "ArcRest", + "url": "http://gispublic.waterboards.ca.gov/ArcGIS/rest/services/Water_Quality/Ocean_Discharges/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": null, + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 218, + "fields": { + "name": "National Wetlands Inventory (USFWS, 2014)", + "slug_name": "national-wetlands-inventory-usfws-2014", + "layer_type": "ArcRest", + "url": "http://107.20.228.18/arcgis/rest/services/Wetlands/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "This data set represents the extent, approximate location and type of wetlands and deepwater habitats in the United States and its Territories. These data delineate the areal extent of wetlands and surface waters as defined by Cowardin et al. (1979). Certain wetland habitats are excluded from the National mapping program because of the limitations of aerial imagery as the primary data source used to detect wetlands. These habitats include seagrasses or submerged aquatic vegetation that are found in the intertidal and subtidal zones of estuaries and near shore coastal waters. Some deepwater reef communities (coral or tuberficid worm reefs) have also been excluded from the inventory. These habitats, because of their depth, go undetected by aerial imagery. By policy, the Service also excludes certain types of \"farmed wetlands\" as may be defined by the Food Security Act or that do not coincide with the Cowardin et al. definition. Contact the Service's Regional Wetland Coordinator for additional information on what types of farmed wetlands are included on wetland maps.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.fws.gov/wetlands/Data/State-Downloads.html", + "metadata": "http://www.fws.gov/wetlands/Data/metadata/FWS_Wetlands.xml", + "source": "http://www.fws.gov/wetlands/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 310 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 219, + "fields": { + "name": "Coastal Tribal Lands (NOAA, 2011)", + "slug_name": "coastal-tribal-lands-noaa-2011", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/BoundariesAndRegions/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "49B403D5-D70C-4B40-A1F3-97703E17353E", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/CoastalTribalLands.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={49B403D5-D70C-4B40-A1F3-97703E17353E}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 220, + "fields": { + "name": "Critical Habitat (USFWS, 2014) ", + "slug_name": "critical-habitat-usfws-2014", + "layer_type": "ArcRest", + "url": "http://criticalhabitat.fws.gov/arcgis/rest/services/crithab/usfwsCriticalHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "2", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "ADA87E2B-154D-4507-91D9-8C1BA7364968", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/CriticalHabitatDesignations.zip", + "metadata": "", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 223, + "fields": { + "name": "Urbanized Areas (USCB, 2010)", + "slug_name": "urbanized-areas-uscb-2010", + "layer_type": "ArcRest", + "url": "http://tigerweb.geo.census.gov/arcgis/rest/services/TIGERweb/Urban/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "83A6FA6E-1431-4DD7-9451-9BC9A0E6B23C", + "description": "", + "data_overview": "", + "data_source": "http://www.census.gov/", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp2.census.gov/geo/tiger/TIGER2010/UA/2010/tl_2010_us_uac10.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={83A6FA6E-1431-4DD7-9451-9BC9A0E6B23C}", + "source": "http://www.census.gov/en.html", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 253 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 224, + "fields": { + "name": "Urban Clusters (USCB, 2010)", + "slug_name": "urban-clusters-uscb-2010", + "layer_type": "ArcRest", + "url": "http://tigerweb.geo.census.gov/arcgis/rest/services/TIGERweb/Urban/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "9AF2A905-02F8-44CE-8BAA-033E87FC9C38", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "https://www.census.gov/geo/maps-data/data/tiger.html", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={9AF2A905-02F8-44CE-8BAA-033E87FC9C38}", + "source": "https://www.census.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 253 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 228, + "fields": { + "name": "Oregon Commercial Fishing - SOORC (Ecotrust, 2011)", + "slug_name": "oregon-commercial-fishing-soorc-ecotrust-2011", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "src_all_grid", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=src_all_grid&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "9bb6d77e-23b0-4d43-910e-9ed89b0c4fa2", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/rasters/src_all_grid.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={e6fb9bd7-858c-403a-bba7-4b9ea70224c5}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 232, + "fields": { + "name": "CA Marine Protected Areas (CDFW, 2013)", + "slug_name": "ca-marine-protected-areas-cdfw-2013", + "layer_type": "ArcRest", + "url": "https://map.dfg.ca.gov/arcgis/rest/services/Project_Marine/Marine_MPA/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "31410CD0-58DF-4723-8CB3-A974B75911B2", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.dfg.ca.gov/R7_MR/MANAGEMENT/MPA/MPA_CA_Existing_160301.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={31410CD0-58DF-4723-8CB3-A974B75911B2}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249, + 483 + ], + "themes": [ + 10, + 13 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 233, + "fields": { + "name": "California Areas of Special Biological Significance (CSWRCB, 2005)", + "slug_name": "california-areas-of-special-biological-significance-cswrcb-2005", + "layer_type": "ArcRest", + "url": "https://map.dfg.ca.gov/arcgis/rest/services/Project_Marine/Marine_Management/MapServer/export", + "shareable_url": true, + "arcgis_layers": "5", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "E30A8888-E8C5-4557-807B-4FE85F85A71D", + "description": "Not Available", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={E30A8888-E8C5-4557-807B-4FE85F85A71D}", + "source": "http://portal.gis.ca.gov/geoportal/catalog/OPC/OPC.page", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 324 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 234, + "fields": { + "name": "National Wildlife Refuges - CA (CDFG, XX)", + "slug_name": "national-wildlife-refuges-ca-cdfg-xx", + "layer_type": "ArcRest", + "url": "https://map.dfg.ca.gov/arcgis/rest/services/Project_Marine/Marine_Management/MapServer/export", + "shareable_url": true, + "arcgis_layers": "7", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": null, + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 235, + "fields": { + "name": "California National Parks (CTA, 2010)", + "slug_name": "california-national-parks-cta-2010", + "layer_type": "ArcRest", + "url": "http://services.gis.ca.gov/arcgis/rest/services/Government/CalifNationalParks/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "A7FA4A2E-0B78-4FE9-B2A5-8C9FFF6BF85B", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={A7FA4A2E-0B78-4FE9-B2A5-8C9FFF6BF85B}", + "source": "http://portal.gis.ca.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 239, + "fields": { + "name": "SF Bay Major Permits (BCDC, 2010)", + "slug_name": "sf-bay-major-permits-bcdc-2010", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Environment/SFBCDC_Majors_09/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "8217CC72-8DAE-4CB8-BC58-C68FA1176FAA", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={8217CC72-8DAE-4CB8-BC58-C68FA1176FAA}", + "source": "http://portal.gis.ca.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 249, + "fields": { + "name": "Management", + "slug_name": "management", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": null, + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 157, + 175, + 184, + 204, + 205, + 206, + 232, + 239, + 285, + 330, + 331, + 335, + 341, + 349, + 357, + 358, + 360, + 361, + 365, + 366, + 379, + 381, + 382, + 384, + 385, + 386, + 400, + 461, + 462, + 464, + 465, + 466, + 470, + 471, + 472, + 478 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 250, + "fields": { + "name": "Boundaries", + "slug_name": "boundaries", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": null, + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 174, + 219, + 180, + 347, + 316, + 348, + 235, + 355, + 353, + 356, + 326, + 338, + 467, + 411, + 410, + 315 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 251, + "fields": { + "name": "Infrastructure", + "slug_name": "infrastructure", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": null, + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 171, + 172, + 191, + 294, + 268, + 302, + 270, + 277, + 359, + 321, + 390, + 377, + 473, + 271, + 375, + 345 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 252, + "fields": { + "name": "Economy", + "slug_name": "economy", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": null, + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 170, + 173, + 209, + 211, + 228, + 264, + 266, + 267, + 272, + 278, + 281, + 282, + 283, + 284, + 350, + 351, + 352, + 362, + 367, + 387, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 463, + 480, + 488 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 253, + "fields": { + "name": "Population", + "slug_name": "population", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 224, + 263, + 223, + 368, + 391, + 369, + 370, + 371, + 372 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 254, + "fields": { + "name": "Species and Habitats", + "slug_name": "species-and-habitats", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 168, + 205, + 204, + 329, + 325, + 487, + 327, + 458, + 426, + 428, + 429, + 427, + 344, + 474 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 256, + "fields": { + "name": "Oceans", + "slug_name": "oceans", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 193, + 265, + 276, + 297, + 314, + 333, + 334, + 363, + 364, + 373, + 388, + 389, + 392, + 393, + 394, + 401, + 402, + 405, + 406, + 407, + 408, + 431, + 435, + 436, + 437, + 439, + 450, + 453, + 454, + 475, + 476 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 257, + "fields": { + "name": "Land Surface", + "slug_name": "land-surface", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 194, + 193, + 295, + 297, + 273, + 274, + 337, + 336 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 263, + "fields": { + "name": "USA Population Density (Esri, 2012)", + "slug_name": "usa-population-density-esri-2012", + "layer_type": "ArcRest", + "url": "http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_Population_Density/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "AA3C4B28-C36D-4A43-869F-44BF7FB471ED", + "description": "", + "data_overview": "", + "data_source": "http://goto.arcgisonline.com/maps/Demographics/USA_Population_Density ", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={AA3C4B28-C36D-4A43-869F-44BF7FB471ED}", + "source": "http://goto.arcgisonline.com/maps/Demographics/USA_Population_Density ", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 253 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 264, + "fields": { + "name": "Commercial Vessel Density (NOAA, 2009-2010)", + "slug_name": "commercial-vessel-density-noaa-2009-2010", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/ArcGIS/rest/services/MarineCadastre/CommercialVesselDensityOctober2009_2010/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "031410A6-0231-4720-A0E3-0D8457D67CFA", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/AIS/CommercialVesselDensityOctober2009_2010National.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={031410A6-0231-4720-A0E3-0D8457D67CFA}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 265, + "fields": { + "name": "Bathymetric Contours (NOAA, 2013)", + "slug_name": "bathymetric-contours-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "7", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "3D3ED6C0-E452-41F5-9D28-5C4E395A26A6", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/BathymetricContours.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={BE3A6347-C98D-4A27-91BA-64B5F8B3C4F0}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 266, + "fields": { + "name": "California Ocean Uses Atlas (NOAA, 2014)", + "slug_name": "california-ocean-uses-atlas-noaa-2014", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/OceanUsesCalifornia/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1F93200F-3C0F-48AB-965C-80FE90E228F4", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/CaliforniaOceanUses.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={D7316951-2995-4228-954E-E74AF0CC4E63}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252, + 460 + ], + "themes": [ + 10, + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 267, + "fields": { + "name": "Anchorage Areas of the US (NOAA, 2013)", + "slug_name": "anchorage-areas-of-the-us-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/NavigationAndMarineTransportation/MapServer/export", + "shareable_url": true, + "arcgis_layers": "7", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "36D8C566-60AC-47E6-A0BA-6CFC17CA4F13", + "description": "The areas described in subpart A (33 U.S.C. 100) are designated as special anchorage areas. Vessels of less than 20 meters are not required to exhibit anchor lights or shapes required by rule 30 of the Inland Navigation Rules (33 U.S.C. 2030). The areas described in subpart B are designated as anchorage grounds. Please Note: Some areas depicted are deemed \"Anchorage Prohibited\" or \"Anchor at Your Own Risk\". Please refer to the appropriate Nautical Chart or the CFR for more detailed information.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/AnchorageAreas.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={E485CA2F-0B9D-4C2B-BBF0-1D8DFCF2B0A8}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 268, + "fields": { + "name": "Artificial Reefs (NOAA, 2014)", + "slug_name": "artificial-reefs-noaa-2014", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "80FB3DE9-2B24-4E1B-A908-0DC47C2A1301", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/ArtificialReefs.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={6810832C-AEEC-4DEC-88AE-60249E38815B}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 270, + "fields": { + "name": "Deepwater Ports (NOAA, 2013)", + "slug_name": "deepwater-ports-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/OceanEnergy/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1E194EA2-68FB-45D2-8DAB-F4FBED3E398C", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/DeepwaterPorts.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={2B004078-3CD6-4544-8BB4-C0FF206BB0B0}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 271, + "fields": { + "name": "High Frequency Radar Locations (NOAA, 2013)", + "slug_name": "high-frequency-radar-locations-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/ArcGIS/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "2", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "A35509CA-4393-4A54-A8AC-DF8B7E675135", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/HighFrequencyRadarLocations.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={B0054597-0D9D-402F-AD47-5B9591C5F226}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 272, + "fields": { + "name": "Maintained Channels (NOAA, 2013)", + "slug_name": "maintained-channels-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/NavigationAndMarineTransportation/MapServer/export", + "shareable_url": true, + "arcgis_layers": "6", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "6357D4B0-C8BD-4413-8B16-D1959E46B813", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/MaintainedChannels.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={6527CF3E-2EB1-4729-9022-00531DDE3A9B}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252, + 339 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 273, + "fields": { + "name": "Seafloor Geology - GLORIA (USGS, 2013)", + "slug_name": "seafloor-geology-gloria-usgs-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/NationalViewer/MapServer/export", + "shareable_url": true, + "arcgis_layers": "32", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "93CD2FCC-C7FF-42B2-8B3E-44898FE0BB85", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://coastalmap.marine.usgs.gov/GISdata/regional/westcoast/gloria/shapes/gloria_interp/west.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={93CD2FCC-C7FF-42B2-8B3E-44898FE0BB85}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 257 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 274, + "fields": { + "name": "Seafloor Sediment (USGS, 2013)", + "slug_name": "seafloor-sediment-usgs-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/NationalViewer/MapServer/export", + "shareable_url": true, + "arcgis_layers": "10", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "140A23E0-7E52-4A66-909A-7355640B7087", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://pubs.usgs.gov/ds/2006/182/data/data_zips/pac_prs.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={140A23E0-7E52-4A66-909A-7355640B7087}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 257 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 275, + "fields": { + "name": "Marine Hydrokinetic Projects (NOAA, 2013)", + "slug_name": "marine-hydrokinetic-projects-noaa-2013", + "layer_type": "ArcRest", + "url": "http://csc.noaa.gov/arcgis/rest/services/MarineCadastre/OceanEnergy/MapServer/export", + "shareable_url": true, + "arcgis_layers": "2", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "7430A33C-1804-4312-9545-A30110F52772", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/OffshoreTidalHydrokineticProjects.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={AA07C632-345F-411A-8D3C-F47C85B314EC}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 276, + "fields": { + "name": "Wave Resource Potential (DOE, 2011)", + "slug_name": "wave-resource-potential-doe-2011", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/OceanWaveResourcePotential/MapServer/export", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://en.openei.org/datasets/files/868/pub/wave_power_density.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={5B556E0D-709F-42C8-8B9E-A4E9C9C3FE36}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 277, + "fields": { + "name": "Principle Ports (NOAA, 2013)", + "slug_name": "principle-ports-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/NavigationAndMarineTransportation/MapServer/export", + "shareable_url": true, + "arcgis_layers": "2", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "ADD86530-9D8A-4231-B53B-EE292442FDB6", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/PrincipalPorts.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={ADD86530-9D8A-4231-B53B-EE292442FDB6}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 278, + "fields": { + "name": "Wind Technology Depth Zones (NOAA, 2013)", + "slug_name": "wind-technology-depth-zones-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/OceanEnergy/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "7B580404-889F-4B8D-90B8-8934FB17C54D", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/PrincipalPorts.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={2212A9F6-681D-42D0-8033-A41FBEE8A6E9}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252, + 460 + ], + "themes": [ + 10, + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 280, + "fields": { + "name": "Other Vessel Density (NOAA, 2012)", + "slug_name": "other-vessel-density-noaa-2012", + "layer_type": "ArcRest", + "url": "http://csc.noaa.gov/arcgis/rest/services/MarineCadastre/2011VesselDensity/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "26BC397E-6612-4A85-8B6E-A97DCCF9D089", + "description": "Automatic Identification Systems (AIS) are a navigation safety device that transmits and monitors the location and characteristics of many vessels in U.S. and international waters in real-time. This dataset represents the density of \u201call other\u201d vessel traffic in 2011 for the US West Coast from vessels with AIS transponders in 100 meter grid cells. All other vessels are those not considered Cargo, Fishing, Passenger, Pleasure Craft, Sailing, Tanker, Tug, or Towing. The dataset is best interpreted using a high to low density scale and does not represent actual vessel counts.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/2011AIS/WestCoastAllOtherVesselDensity2011.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={25BBB151-37FD-4C49-8DEB-7EA5B5223BA4}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 281, + "fields": { + "name": "Fishing Vessel Density (NOAA, 2013)", + "slug_name": "fishing-vessel-density-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/2013FishingVesselDensity/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "A42F3B1D-E067-449F-8C3D-053C24EBDD0D", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/2013AIS/VesselDensityFishing2013.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={A42F3B1D-E067-449F-8C3D-053C24EBDD0D}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 282, + "fields": { + "name": "Pleasure Craft and Sailing Vessel Density (NOAA, 2013)", + "slug_name": "pleasure-craft-and-sailing-vessel-density-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/2013PleasureCraftSailingVesselDensity/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "D451992E-5761-4255-9735-64CCEF6A4A61", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/2013AIS/VesselDensityPleasureCraftSailing2013.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={D451992E-5761-4255-9735-64CCEF6A4A61}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 283, + "fields": { + "name": "Tanker Vessel Density (NOAA, 2013)", + "slug_name": "tanker-vessel-density-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/2013TankerVesselDensity/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "2531E840-DE1E-49C5-9E2C-E9D4802744E9", + "description": "Automatic Identification Systems (AIS) are a navigation safety device that transmits and monitors the location and characteristics of many vessels in U.S. and international waters in real-time. This dataset represents the density of tanker vessel traffic in 2013 for the contiguous United States offshore waters from tanker vessels with AIS transponders in 100 meter grid cells. The dataset is best interpreted using a high to low density scale and does not represent actual vessel counts.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/2013AIS/VesselDensityTanker2013.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={2531E840-DE1E-49C5-9E2C-E9D4802744E9}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 284, + "fields": { + "name": "All Vessel Density (NOAA, 2013)", + "slug_name": "all-vessel-density-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/2013VesselDensity/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "3B5A4B14-FFA1-41FC-8196-0CD742354104", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/2013AIS/VesselDensityFishing2013.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={3B5A4B14-FFA1-41FC-8196-0CD742354104}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 285, + "fields": { + "name": "Wrecks and Obstructions (NOAA, 2013)", + "slug_name": "wrecks-and-obstructions-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/NavigationAndMarineTransportation/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "B2DC3A3F-8DD3-4C88-B8E7-81BE0171D8D5", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/WrecksAndObstructions.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={B2DC3A3F-8DD3-4C88-B8E7-81BE0171D8D5}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 287, + "fields": { + "name": "Average Annual Wind Potential (EPA, 2011) TEST", + "slug_name": "average-annual-wind-potential-epa-2011-test", + "layer_type": "ArcRest", + "url": "http://geodata.epa.gov/arcgis/rest/services/Region9/R9HomeViewClimateMeteorological/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": null, + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 288, + "fields": { + "name": "Average Annual Rainfall - Inches (EPA, 2011) TEST", + "slug_name": "average-annual-rainfall-inches-epa-2011-test", + "layer_type": "ArcRest", + "url": "http://geodata.epa.gov/arcgis/rest/services/Region9/R9HomeViewClimateMeteorological/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": null, + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 289, + "fields": { + "name": "Watershed Boundary Dataset (USGS, 2012)", + "slug_name": "watershed-boundary-dataset-usgs-2012", + "layer_type": "ArcRest", + "url": "http://services.nationalmap.gov/ArcGIS/rest/services/nhd/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "C0055593-CA3F-4249-8A52-C845B34DCD9F", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={C0055593-CA3F-4249-8A52-C845B34DCD9F}", + "source": "http://nhd.usgs.gov/wbd.html", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 309 + ], + "themes": [ + 11 + ], + "attribute_fields": [ + 123 + ], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 294, + "fields": { + "name": "Outfalls (EPA, 2012)", + "slug_name": "outfalls-epa-2012", + "layer_type": "ArcRest", + "url": "http://geodata.epa.gov/arcgis/rest/services/OEI/FRS_Subfacilities/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "C3FAC902-FE2C-4488-853D-61B80FCBFBA8", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "https://edg.epa.gov/data/Public/R9/R9_Stakeholder_Outreach/NPDES_Outfalls.gdb.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={C3FAC902-FE2C-4488-853D-61B80FCBFBA8}", + "source": "http://epa.gov/roe/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 295, + "fields": { + "name": "Land Cover (EPA, 2014)", + "slug_name": "land-cover-epa-2014", + "layer_type": "ArcRest", + "url": "http://geodata.epa.gov/arcgis/rest/services/ORD/ROE_NLCD/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": null, + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "https://edg.epa.gov/metadata/catalog/search/resource/details.page?uuid={235B12CF-9C83-47B8-B0BF-9AD89710F5C5}", + "source": "http://epa.gov/roe/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 257 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 297, + "fields": { + "name": "Seafloor Induration (ATSML, 2014)", + "slug_name": "seafloor-induration-atsml-2014", + "layer_type": "ArcRest", + "url": "http://hornet.coas.oregonstate.edu/arcgis/rest/services/2014_BOEM/Seafloor_Induration_WA_OR_NCA/MapServer/export", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "A3299765-3FE0-4421-8FDD-D2ABE8D1E3C6", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={A3299765-3FE0-4421-8FDD-D2ABE8D1E3C6}", + "source": "http://activetectonics.coas.oregonstate.edu/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 257, + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 298, + "fields": { + "name": "Wind Resource Potential (DOE, 2011)", + "slug_name": "wind-resource-potential-doe-2011", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/OffshoreWindResourcePotential/MapServer/export", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.nrel.gov/gis/data/GIS_Data_Technology_Specific/United_States/Wind/High_Resolution/Pacific_Coast_90mwindspeed_Offshore_Wind_High_Resolution.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={78357C6F-4B35-46F0-BCBA-05B1B3DCD8DE}", + "source": "http://marinecadastre.gov/data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 299, + "fields": { + "name": "Tidal Resource Potential (DOE, 2011)", + "slug_name": "tidal-resource-potential-doe-2011", + "layer_type": "ArcRest", + "url": "http://csc.noaa.gov/arcgis/rest/services/MarineCadastre/OceanEnergy/MapServer/export", + "shareable_url": true, + "arcgis_layers": "7", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "3867A704-1543-472D-A99E-1C5C0E0B9B3B", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.tidalstreampower.gatech.edu/", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={3867A704-1543-472D-A99E-1C5C0E0B9B3B}", + "source": "http://marinecadastre.gov/data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 300, + "fields": { + "name": "Atmosphere", + "slug_name": "atmosphere", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 298, + 396, + 397, + 398, + 399, + 430, + 432, + 433, + 434, + 438, + 440, + 441, + 442, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 451, + 452 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 301, + "fields": { + "name": "Surface Currents (CORDC, 2014)", + "slug_name": "surface-currents-cordc-2014", + "layer_type": "WMS", + "url": "http://hfrnet.ucsd.edu/thredds/wms/HFRNet/USWC/6km/hourly/RTV?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "v", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "4339E13C-98B8-4EB6-AFB1-C03D38379E59", + "description": "The Coastal Observing Research and Development Center (CORDC) HFRadar Network (HFRNet), in collaboration with the West Coast IOOS Regional Associations (SCCOOS, CeNCOOS and NANOOS), manages and distributes near-real-time ocean surface currents data measured by a network of shore-based High-Frequency (HF) radar stations. The HFRNet program measures estimates of surface current velocities representative of the upper 0.3 \u2013 2.5 meters of the ocean. Spatially-contiguous surface current mappings spanning the entire California and Oregon coasts have been available since 2008. As of 2014, the West Coast geographic range encompasses 65 physical radar stations from northern Baja California to southern Washington, and lower British Columbia. Data are available in four horizontal resolutions: 0.5, 1, 2 and 6 km. The OPeNDAP and WMS link types listed here are only for the 6 km (coarsest) resolution. The other resolutions are available via the CORDC THREDDS server. Data collection is on-going and near-real-time, with on-the-ground maintenance of individual radar stations provided by local partner organizations.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://cordc.ucsd.edu/projects/mapping/api/", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={4339E13C-98B8-4EB6-AFB1-C03D38379E59}", + "source": "http://cordc.ucsd.edu/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 302, + "fields": { + "name": "OA Assets Inventory (IOOS, 2014)", + "slug_name": "oa-assets-inventory-ioos-2014", + "layer_type": "WMS", + "url": "http://data.nanoos.org/geoserver/oa/wc_oa_assetinv/ows?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "wc_oa_assetinv", + "is_sublayer": true, + "legend": "http://data.nanoos.org/geoserver/oa/ows?service=WMS&request=GetLegendGraphic&version=1.1.1&format=image/png&width=20&height=20&layer=oa:wc_oa_assetinv&style=wcoaainv_by_group_type", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "E722DB9F-97D0-42F1-8CE2-3400D99B4E51", + "description": "", + "data_overview": "In order to make ocean acidification-related data more readily available to west coast ocean managers, the West Coast Integrated Ocean Observing System (IOOS) Regional Associations (SCCOOS, CeNCOOS and NANOOS) have compiled an ocean acidification (OA) inventory of assets maintained by various collaborators and monitoring bodies along the West Coast. The inventory consists of points for measurements of 1) direct OA parameters (pCO2, pH, DIC), and 2) proxy parameters (T, S, pO2) that can be used to track aragonite saturation state (\u2126) using appropriate regressions. Observation collection types include moored buoys and fixed shore platform stations, cruise survey stations, and glider tracks.", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={E722DB9F-97D0-42F1-8CE2-3400D99B4E51}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 303, + "fields": { + "name": "Oceanographic Moorings (OCNMS, ", + "slug_name": "oceanographic-moorings-ocnms", + "layer_type": "WMS", + "url": "http://data.nanoos.org/geoserver/partners/ocnms_moorings_mainstations/ows?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "ocnms_moorings_mainstations", + "is_sublayer": false, + "legend": "http://data.nanoos.org/geoserver/partners/ows?service=WMS&request=GetLegendGraphic&version=1.1.1&format=image/png&width=20&height=20&layer=partners:ocnms_moorings_mainstations", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 304, + "fields": { + "name": "Foam Policy - Counties (WCGA, 2014)", + "slug_name": "foam-policy-counties-wcga-2014", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/mapcache?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "WC_Foam_Ban_Counties_WCGA_2014", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/mapcache/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=WC_Foam_Ban_Counties_WCGA_2014&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "48471943-86E2-47EB-AF1F-ADCE043A1AB0", + "description": "This layer depicts West Coast cities or counties that have passed or implemented foam food container or plastic bag bans in their jurisdictions. These policy layers were created for use in the West Cost Ocean Data Portal marine data viewer to depict where marine debris policies have been implemented and passed. When viewed alongside beach clean-up data from the West Coast Marine Debris Database (debris.westcoastoceans.org) a user can examine the role that debris policies have played in changing the amount or composition of debris being deposited on the coast.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 311 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 305, + "fields": { + "name": "Plastic Bag Bans - Cities (WCGA, 2014)", + "slug_name": "plastic-bag-bans-cities-wcga-2014", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/mapcache?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "WC_Plastic_Bag_Ban_Cities_WCGA_2014", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/mapcache/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=WC_Foam_Ban_Counties_WCGA_2014&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "13A69F73-A45E-4A51-89CA-C1C8AE22EDE9", + "description": "This layer depicts West Coast cities or counties that have passed or implemented foam food container or plastic bag bans in their jurisdictions. These policy layers were created for use in the West Cost Ocean Data Portal marine data viewer to depict where marine debris policies have been implemented and passed. When viewed alongside beach clean-up data from the West Coast Marine Debris Database (debris.westcoastoceans.org) a user can examine the role that debris policies have played in changing the amount or composition of debris being deposited on the coast. ", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 311 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 306, + "fields": { + "name": "Plastic Bag Bans - Counties (WCGA, 2014)", + "slug_name": "plastic-bag-bans-counties-wcga-2014", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/mapcache?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "WC_Plastic_Bag_Ban_Counties_WCGA_2014", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/mapcache/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=WC_Foam_Ban_Counties_WCGA_2014&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "B80D37B2-3D63-430B-AE23-6F7041FB11AD", + "description": "This layer depicts West Coast cities or counties that have passed or implemented foam food container or plastic bag bans in their jurisdictions. These policy layers were created for use in the West Cost Ocean Data Portal marine data viewer to depict where marine debris policies have been implemented and passed. When viewed alongside beach clean-up data from the West Coast Marine Debris Database (debris.westcoastoceans.org) a user can examine the role that debris policies have played in changing the amount or composition of debris being deposited on the coast. ", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 311 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 307, + "fields": { + "name": "Foam Policy - Cities (WCGA, 2014)", + "slug_name": "foam-policy-cities-wcga-2014", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/mapcache?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "WC_Foam_Ban_Cities_WCGA_2014", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/mapcache?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=WC_Foam_Ban_Cities_WCGA_2014&format=image/png&STYLE=default", + "legend_title": "Foam Policy - Cities (WCGA, 2014)", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "C27E4A98-F716-44D7-ADAC-75D94B5071FC", + "description": "This layer depicts West Coast cities or counties that have passed or implemented foam food container or plastic bag bans in their jurisdictions. These policy layers were created for use in the West Cost Ocean Data Portal marine data viewer to depict where marine debris policies have been implemented and passed. When viewed alongside beach clean-up data from the West Coast Marine Debris Database (debris.westcoastoceans.org) a user can examine the role that debris policies have played in changing the amount or composition of debris being deposited on the coast. ", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 311 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 309, + "fields": { + "name": "Freshwater", + "slug_name": "freshwater", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 182, + 201, + 289, + 346 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 310, + "fields": { + "name": "Estuaries", + "slug_name": "estuaries", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 218, + 383 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 311, + "fields": { + "name": "Marine Debris", + "slug_name": "marine-debris", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 304, + 305, + 306, + 307, + 312, + 313 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 312, + "fields": { + "name": "Beach Cleanup (WCGA, 2014)", + "slug_name": "beach-cleanup-wcga-2014", + "layer_type": "Vector", + "url": "http://debris.westcoastoceans.org/events/search?format=json&type=Site%20Cleanup", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": true, + "legend": "/media/wcodp/img/BeachCleanupLegend_75.png", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": true, + "geoportal_id": "635C89E3-A6F6-446C-B3AF-A95B4FF46A15", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id=%7B635C89E3-A6F6-446C-B3AF-A95B4FF46A15%7D", + "source": "http://debris.westcoastoceans.org", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 311 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 313, + "fields": { + "name": "Derelict Gear (WCGA, 2014)", + "slug_name": "derelict-gear-wcga-2014", + "layer_type": "Vector", + "url": "http://debris.westcoastoceans.org/events/search?type=Derelict%20Gear%20Removal&format=json", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": true, + "legend": "/media/wcodp/img/DerelictGearLegend_75.png", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": true, + "geoportal_id": "89C477CF-F0B3-4DC5-A4F9-7C74EC3CFB89", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={89C477CF-F0B3-4DC5-A4F9-7C74EC3CFB89}&option=view", + "source": "http://debris.westcoastoceans.org", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 311 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 314, + "fields": { + "name": "Ocean Surface Currents - January (CORDC, 2014) ", + "slug_name": "ocean-surface-currents-january-cordc-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?/&STYLES=vector_arrow%2Frainbow&FORMAT=image%2Fpng&TRANSPARENT=true&TIME=1970-01-15", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "CORDC_MONTHLY%2Fsea_water_velocity", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?LAYERS=CORDC_MONTHLY%2Fsea_water_velocity&request=GetLegendGraphic&sld_version=1.1.0&layer=CORDC_MONTHLY%2Fsea_water_velocity&format=image/png", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1191286B-7AA9-4303-87F4-E9FE87D8CF6E", + "description": "The Coastal Observing Research and Development Center (CORDC) HFRadar Network (HFRNet), in collaboration with the West Coast IOOS Regional Associations (SCCOOS, CeNCOOS and NANOOS), manages and distributes near-real-time ocean surface currents data measured by a network of shore-based High-Frequency (HF) radar stations. The HFRNet program measures estimates of surface current velocities representative of the upper 0.3 \u2013 2.5 meters of the ocean. Spatially-contiguous surface current mappings spanning the entire California and Oregon coasts have been available since 2008. As of 2014, the West Coast geographic range encompasses 65 physical radar stations from northern Baja California to southern Washington, and lower British Columbia. Data are available in four horizontal resolutions: 0.5, 1, 2 and 6 km. The OPeNDAP and WMS link types listed here are only for the 6 km (coarsest) resolution. The other resolutions are available via the CORDC THREDDS server. Data collection is on-going and near-real-time, with on-the-ground maintenance of individual radar stations provided by local partner organizations.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://cordc.ucsd.edu/projects/mapping/api/", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={A15A3008-EB7C-45B0-B547-12799990D85B}", + "source": "http://cordc.ucsd.edu/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 315, + "fields": { + "name": "COLREGS Demarcation Lines (NOAA, 2014)", + "slug_name": "colregs-demarcation-lines-noaa-2014", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/ArcGIS/rest/services/MarineCadastre/NavigationAndMarineTransportation/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "3A48A931-9123-459F-A9C4-6847651A4FDD", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/COLREGSDemarcationLines.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={D98DB22C-E208-4D0F-AE63-936A2C19A72B}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 316, + "fields": { + "name": "Coastal Zone Boundary (NOAA, 2014)", + "slug_name": "coastal-zone-boundary-noaa-2014", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/BoundariesAndRegions/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "7424833D-30AA-4E03-B1B3-017378055655", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/CoastalZoneManagementActBoundary.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={31890594-FA19-4611-AB42-1864320EC2F2}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250, + 483 + ], + "themes": [ + 10, + 13 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 317, + "fields": { + "name": "High Frequency Radar Ranges (NOAA, 2013)", + "slug_name": "high-frequency-radar-ranges-noaa-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/ArcGIS/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "9", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "0C324E84-C922-4722-83CB-DE09A3ACAE6F", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/HighFrequencyRadarRadialRanges.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={9326C5BF-C6F9-488D-B03E-A62119BDD7E6}", + "source": "http://www.ioos.noaa.gov/hfradar", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 321, + "fields": { + "name": "Weather Stations (NOAA, 2013)", + "slug_name": "weather-stations-noaa-2013", + "layer_type": "ArcRest", + "url": "https://www.coast.noaa.gov/arcgis/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "D01A1E48-7B39-46E1-9C38-FA6DD20F3F34", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/WeatherRadarStationsFederal.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={D3F1774B-E953-48C2-9E6F-014C9050EF40}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 324, + "fields": { + "name": "Ecosystems and Functions", + "slug_name": "ecosystems-and-functions", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 233 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 325, + "fields": { + "name": "California Steelhead and Chinook Critical Habitat and Distribution (CDFG, 2005)", + "slug_name": "california-steelhead-and-chinook-critical-habitat-and-distribution-cdfg-2005", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_Chinook_and_Steelhead_Salmon/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "2FD18A1D-3E9E-448D-AA72-34AFDD73500E", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={2FD18A1D-3E9E-448D-AA72-34AFDD73500E}", + "source": "http://portal.gis.ca.gov/geoportal/catalog/OPC/OPC.page", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 326, + "fields": { + "name": "California State Parks (CDPR, 2012)", + "slug_name": "california-state-parks-cdpr-2012", + "layer_type": "ArcRest", + "url": "http://services.gis.ca.gov/arcgis/rest/services/Government/CaStateParks/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "EDAB87D3-2C73-472D-9714-BFB5D3574100", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={EDAB87D3-2C73-472D-9714-BFB5D3574100}", + "source": "http://portal.gis.ca.gov/geoportal/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 327, + "fields": { + "name": "California Pinniped Haul Out Areas - SF Bay (NMFS, 2007)", + "slug_name": "california-pinniped-haul-out-areas-sf-bay-nmfs-2007", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_San_Francisco_Pinniped_Haul-out_Sites_NMFS_2007/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "5E056CA6-B96E-423C-B2B7-10F451FE0549", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={5E056CA6-B96E-423C-B2B7-10F451FE0549}", + "source": "http://portal.gis.ca.gov/geoportal/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 329, + "fields": { + "name": "California Eelgrass - SF Bay (CSMW, 2009)", + "slug_name": "california-eelgrass-sf-bay-csmw-2009", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_San_Francisco_Bay_Eelgrass/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "8206404B-D152-45E6-9874-BDF0A37CA3F5", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={8206404B-D152-45E6-9874-BDF0A37CA3F5}", + "source": "http://portal.gis.ca.gov/geoportal/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 330, + "fields": { + "name": "California Potential Sea Level Rise Impacts (CSMW, 2010)", + "slug_name": "california-potential-sea-level-rise-impacts-csmw-2010", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_Potential_Sea_Level_Rise_Impacts/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "FA1AB0D1-98A5-408E-A430-503B0139DDCA", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={FA1AB0D1-98A5-408E-A430-503B0139DDCA}", + "source": "http://portal.gis.ca.gov/geoportal/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249, + 403 + ], + "themes": [ + 10, + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 331, + "fields": { + "name": "California Coastal Sediment Borrow Sites (CSMW, 2010)", + "slug_name": "california-coastal-sediment-borrow-sites-csmw-2010", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_Potential_Coastal_and_Upland_Sediment_Sources/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "9F5AB023-3180-4959-B078-9F2079B424BE", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={9F5AB023-3180-4959-B078-9F2079B424BE}", + "source": "http://portal.gis.ca.gov/geoportal/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 333, + "fields": { + "name": "California Offshore Substrate (CCC, 2010)", + "slug_name": "california-offshore-substrate-ccc-2010", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_Offshore_Substrate_Types/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "64A4D0D0-926C-47B6-827F-FEC4178C4F9F", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={64A4D0D0-926C-47B6-827F-FEC4178C4F9F}", + "source": "http://portal.gis.ca.gov/geoportal/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 334, + "fields": { + "name": "California Littoral Cells (CSMW, 2005)", + "slug_name": "california-littoral-cells-csmw-2005", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_Littoral_Cells/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1C1EF8DD-6DD0-4678-9923-750B6199960D", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={1C1EF8DD-6DD0-4678-9923-750B6199960D}", + "source": "http://portal.gis.ca.gov/geoportal/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 335, + "fields": { + "name": "California Harbor Borrow Sites (CSMW, 2010)", + "slug_name": "california-harbor-borrow-sites-csmw-2010", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_Harbors_Borrow_Sites/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "8E72BE54-40B6-4607-AF07-C260916D9198", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={8E72BE54-40B6-4607-AF07-C260916D9198}", + "source": "http://portal.gis.ca.gov/geoportal/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 336, + "fields": { + "name": "California Coastal Conditions (CSMW, 2010)", + "slug_name": "california-coastal-conditions-csmw-2010", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_Coastal_Conditions/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "8A3261A5-FB06-470B-A2C7-1BBEA93F5D19", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={8A3261A5-FB06-470B-A2C7-1BBEA93F5D19}", + "source": "http://portal.gis.ca.gov/geoportal/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 257 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 337, + "fields": { + "name": "California Sand Deposits (CSMW, 2010)", + "slug_name": "california-sand-deposits-csmw-2010", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_Beach_Sand_Deposits/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "A3A61AAC-7983-41A9-9A28-77A52FDE9E45", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={A3A61AAC-7983-41A9-9A28-77A52FDE9E45}", + "source": "http://portal.gis.ca.gov/geoportal/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 257 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 338, + "fields": { + "name": "California Coastal Zone (CCC, 2010)", + "slug_name": "california-coastal-zone-ccc-2010", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Boundaries/Coastal_Conservancy/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "52947CEF-D7A6-4075-84A7-09EB433484D7", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={52947CEF-D7A6-4075-84A7-09EB433484D7}", + "source": "http://portal.gis.ca.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 339, + "fields": { + "name": "California Sea Level Rise (Pacific Institute)", + "slug_name": "california-sea-level-rise-pacific-institute", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/Sea_Level_Rise/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "E8AB48A6-2C9E-43F5-B762-17F833318589", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={E8AB48A6-2C9E-43F5-B762-17F833318589}", + "source": "http://portal.gis.ca.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 272, + 403 + ], + "themes": [ + 10, + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 341, + "fields": { + "name": "California Tsunami Risk (CalEMA)", + "slug_name": "california-tsunami-risk-calema", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/ArcGIS/rest/services/GeoScience/Tsunami/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "AC619DE4-2AF0-46DC-8839-D33661697FC0", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={AC619DE4-2AF0-46DC-8839-D33661697FC0}", + "source": "http://portal.gis.ca.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 344, + "fields": { + "name": "California Snowy Plover Critical Habitat (CSMW, 2011)", + "slug_name": "california-snowy-plover-critical-habitat-csmw-2011", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_Western_Snowy_Plover_Critical_Habitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "AE9CEE8B-8A8F-4466-85E9-FE40BDF63763", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={AE9CEE8B-8A8F-4466-85E9-FE40BDF63763}", + "source": "http://portal.gis.ca.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 345, + "fields": { + "name": "California Fish Passage Barriers (CSMW, 2010)", + "slug_name": "california-fish-passage-barriers-csmw-2010", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Ocean/CSMW_Fish_Passage_Potential_Barriers/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "651E5D25-BCF7-4993-BF7F-994141C6E7C9", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={651E5D25-BCF7-4993-BF7F-994141C6E7C9}", + "source": "http://portal.gis.ca.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 346, + "fields": { + "name": "California Impaired Waters (CSWCB, 2010)", + "slug_name": "california-impaired-waters-cswcb-2010", + "layer_type": "ArcRest", + "url": "http://gispublic.waterboards.ca.gov/ArcGIS/rest/services/Water_Quality/Impaired_waters/MapServer/export", + "shareable_url": true, + "arcgis_layers": "4", + "wms_slug": "", + "is_sublayer": true, + "legend": "http://gispublic.waterboards.ca.gov/ArcGIS/rest/services/Water_Quality/Impaired_waters/MapServer/legend", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "11FD2B65-AB49-4763-A0AC-CAE269E5BC0F", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={11FD2B65-AB49-4763-A0AC-CAE269E5BC0F}", + "source": "http://portal.gis.ca.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 309 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 347, + "fields": { + "name": "US State and Territorial Boundaries (USCB, 2012)", + "slug_name": "us-state-and-territorial-boundaries-uscb-2012", + "layer_type": "ArcRest", + "url": "http://services.gis.ca.gov/arcgis/rest/services/Government/US_Boundaries/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "FACFF73B-7534-4E91-8956-772DD097AEFF", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={FACFF73B-7534-4E91-8956-772DD097AEFF}", + "source": "http://portal.gis.ca.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 348, + "fields": { + "name": "California Water Districts (USBR, 2012)", + "slug_name": "california-water-districts-usbr-2012", + "layer_type": "ArcRest", + "url": "http://atlas.resources.ca.gov/arcgis/rest/services/Boundaries/USBR_Water_District_2012/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "B636E807-4673-48C4-9276-D508009DFF5D", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={B636E807-4673-48C4-9276-D508009DFF5D}", + "source": "http://portal.gis.ca.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 349, + "fields": { + "name": "Oregon Marine Reserve - Redfish Rocks (ODFW, 2010)", + "slug_name": "oregon-marine-reserve-redfish-rocks-odfw-2010", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "RedfishRocks_FinalMRandMPA_ODFW_2010", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=RedfishRocks_FinalMRandMPA_ODFW_2010&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "e6fb9bd7-858c-403a-bba7-4b9ea70224c5", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/RedfishRocks_FinalMRandMPA_ODFW_2010.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={e6fb9bd7-858c-403a-bba7-4b9ea70224c5}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 350, + "fields": { + "name": "Oregon Renewable Energy Test Site (OSU, 2012)", + "slug_name": "oregon-renewable-energy-test-site-osu-2012", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "NNMREC_OSU_2012", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=NNMREC_OSU_2012&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "c85543ae-d186-4137-b588-a7f3e8c01881", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/NNMREC_OSU_2012.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={c85543ae-d186-4137-b588-a7f3e8c01881}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252, + 460 + ], + "themes": [ + 10, + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 351, + "fields": { + "name": "Oregon Commercial Fishing - Astoria (Ecotrust, 2011)", + "slug_name": "oregon-commercial-fishing-astoria-ecotrust-2011", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "ast_all_grid", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "af79ecb7-4d55-4c42-86db-4dd9ac0acb85", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/rasters/ast_all_grid.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={af79ecb7-4d55-4c42-86db-4dd9ac0acb85}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 352, + "fields": { + "name": "Oregon Commercial Fishing - Florence (Ecotrust, 2011)", + "slug_name": "oregon-commercial-fishing-florence-ecotrust-2011", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "flr_all_grid", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "5c303ecc-cd97-43c4-ab4d-dd828ec2e0d3", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/rasters/flr_all_grid.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={5c303ecc-cd97-43c4-ab4d-dd828ec2e0d3}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 353, + "fields": { + "name": "Oregon Territorial Sea (OCMP, 2008) ", + "slug_name": "oregon-territorial-sea-ocmp-2008", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "BASE_Territorial_Sea_ESIshoreline", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=BASE_Territorial_Sea_ESIshoreline&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "43fa5330-2b6b-11e2-81c1-0800200c9a66", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/BASE_Oregon_Territorial_Sea_3NMLine_OCMP.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={43fa5330-2b6b-11e2-81c1-0800200c9a66}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 355, + "fields": { + "name": "Oregon Coastal Zone (OCMP, 2001)", + "slug_name": "oregon-coastal-zone-ocmp-2001", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "cz-poly", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=cz-poly&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "21229dbe-37c5-4545-a61b-c0d5896c521f", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/cz-poly.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={21229dbe-37c5-4545-a61b-c0d5896c521f}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 356, + "fields": { + "name": "Oregon Statutory Vegetation Line (OCMP, 1967)", + "slug_name": "oregon-statutory-vegetation-line-ocmp-1967", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "svl_ln", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "96d4cd09-49b3-4038-bbea-23d82305ec3a", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/svl_ln.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={96d4cd09-49b3-4038-bbea-23d82305ec3a}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 357, + "fields": { + "name": "Shoreline Classified by ESI (NOAA, 1996)", + "slug_name": "shoreline-classified-by-esi-noaa-1996", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "esi_shoreline_or_coast_NOAA_1996", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=esi_shoreline_or_coast_NOAA_1996&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "66d741bc-dcea-43a6-b14b-8160c52f3971", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/esi_shoreline_or_coast_NOAA_1996.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={66d741bc-dcea-43a6-b14b-8160c52f3971}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 358, + "fields": { + "name": "Oregon Territorial Sea Plan (OCMP, 2013) ", + "slug_name": "oregon-territorial-sea-plan-ocmp-2013", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "TSP_PartFive_PlanMap_index_DLCD_2013", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=TSP_PartFive_PlanMap_index_DLCD_2013&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "ade9a197-d414-4b33-bcbe-ca7490706a4d", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/TSP_PartFive_PlanMap_index_DLCD_2013.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={ade9a197-d414-4b33-bcbe-ca7490706a4d}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249, + 460, + 483 + ], + "themes": [ + 10, + 12, + 13 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 359, + "fields": { + "name": "Oregon Submarine Cables (OFCC, 2012)", + "slug_name": "oregon-submarine-cables-ofcc-2012", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "SubmarineCables_OFCC_2012", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=SubmarineCables_OFCC_2012&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "fd14cc0f-75f5-4cc2-b696-0edde687bd46", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/SubmarineCables_OFCC_2012.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={fd14cc0f-75f5-4cc2-b696-0edde687bd46}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 360, + "fields": { + "name": "Oregon Marine Reserve - Cascade Head (ODFW, 2010)", + "slug_name": "oregon-marine-reserve-cascade-head-odfw-2010", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "CascadeHead_FinaMR_ODFW_2010", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=CascadeHead_FinaMR_ODFW_2010&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "26211896-705a-4e6a-ad6c-eeae8887d4e4", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/CascadeHead_FinaMR_ODFW_2010.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={26211896-705a-4e6a-ad6c-eeae8887d4e4}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 361, + "fields": { + "name": "Oregon Vulnerability to Sea Level Rise (USGS, 2001)", + "slug_name": "oregon-vulnerability-to-sea-level-rise-usgs-2001", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "Vulnerability_SL_Rise_USGS_2001", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=Vulnerability_SL_Rise_USGS_2001&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1d9e9a7e-72fc-4ca5-bd24-1621a45a41a1", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/Coastal_Vulnerability_to_Sea-Level_Rise_USGS_2001.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={1d9e9a7e-72fc-4ca5-bd24-1621a45a41a1}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 362, + "fields": { + "name": "Oregon Tugboat Towlanes (WSG, 2007) ", + "slug_name": "oregon-tugboat-towlanes-wsg-2007", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "Towlanes_WASG_2007", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=Towlanes_WASG_2007&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "e274b8bc-7788-4631-ad32-74467087b16d", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/Towlanes_WASG_2007.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={e274b8bc-7788-4631-ad32-74467087b16d}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 363, + "fields": { + "name": "Oregon Offshore Sand, Gravel, and Shell Deposits (USGS, 1980) ", + "slug_name": "oregon-offshore-sand-gravel-and-shell-deposits-usgs-1980", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "usgs_sediment_1980", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=usgs_sediment_1980&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "5fd367b4-a823-4c32-a617-92837d5d529e", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/sediment.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={5fd367b4-a823-4c32-a617-92837d5d529e}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 364, + "fields": { + "name": "Oregon Lithology Map (ATSML, 2008)", + "slug_name": "oregon-lithology-map-atsml-2008", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "ATSML_OR_Ter_Sea_Lith_061308", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=ATSML_OR_Ter_Sea_Lith_061308&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "df15ed7d-cf1e-4220-a9fa-099c4478039c", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/ATSML_OR_Ter_Sea_Lith_061308.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={df15ed7d-cf1e-4220-a9fa-099c4478039c}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 365, + "fields": { + "name": "Oregon Marine Reserve - Cape Falcon (ODFW, 2010)", + "slug_name": "oregon-marine-reserve-cape-falcon-odfw-2010", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "CapeFalcon_FinaMR_ODFW_2010", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=CapeFalcon_FinaMR_ODFW_2010&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "abf72bbc-82a3-4fef-a1d6-7b52d5166581", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/CapeFalcon_FinaMR_ODFW_2010.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={abf72bbc-82a3-4fef-a1d6-7b52d5166581}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 366, + "fields": { + "name": "Oregon Marine Reserve - Otter Rock (ODFW, 2010)", + "slug_name": "oregon-marine-reserve-otter-rock-odfw-2010", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "OtterRock_FinalMR_ODFW_2010", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=OtterRock_FinalMR_ODFW_2010&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "248cee87-0393-4ba0-ac22-6205bcbf21e6", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/shapes/OtterRock_FinalMR_ODFW_2010.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={248cee87-0393-4ba0-ac22-6205bcbf21e6}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 367, + "fields": { + "name": "Oregon Commercial Fishing - Brookings (Ecotrust, 2011)", + "slug_name": "oregon-commercial-fishing-brookings-ecotrust-2011", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "bgd_all_grid", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "6e5d6e7b-12ff-49bb-8a82-8f008eea06fa", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.coastalatlas.net/downloads/rasters/bgd_all_grid.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={6e5d6e7b-12ff-49bb-8a82-8f008eea06fa}", + "source": "http://coastalatlas.net/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 368, + "fields": { + "name": "USA Population Change (Esri, 2010)", + "slug_name": "usa-population-change-esri-2010", + "layer_type": "ArcRest", + "url": "http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_1990-2000_Population_Change/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "FBC8550E-2384-4C4F-8C31-BB703767DFF4", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={FBC8550E-2384-4C4F-8C31-BB703767DFF4}", + "source": "https://www.census.gov", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 253 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 369, + "fields": { + "name": "USA Population Growth Rate (Esri, 2010)", + "slug_name": "usa-population-growth-rate-esri-2010", + "layer_type": "ArcRest", + "url": "http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_2000-2010_Population_Change/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "E9ADCD31-79C8-44D8-AEF9-08183FDA2B67", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={E9ADCD31-79C8-44D8-AEF9-08183FDA2B67}", + "source": "https://www.census.gov", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 253 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 370, + "fields": { + "name": "USA Population Projected Growth Rate (Esri, 2010)", + "slug_name": "usa-population-projected-growth-rate-esri-2010", + "layer_type": "ArcRest", + "url": "http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_Projected_Population_Change/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "27C6CD3E-B0DD-44E9-84A1-531E8CC3D2DE", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={27C6CD3E-B0DD-44E9-84A1-531E8CC3D2DE}", + "source": "https://www.census.gov", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 253 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 371, + "fields": { + "name": "USA Recent Population Growth (Esri, 2010)", + "slug_name": "usa-recent-population-growth-esri-2010", + "layer_type": "ArcRest", + "url": "http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_Recent_Population_Change/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1236C7DF-325A-4D6C-8413-A4AD34E09799", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={1236C7DF-325A-4D6C-8413-A4AD34E09799}", + "source": "https://www.census.gov", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 253 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 372, + "fields": { + "name": "USA Social Vulnerability (Esri, 2013)", + "slug_name": "usa-social-vulnerability-esri-2013", + "layer_type": "ArcRest", + "url": "http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_Social_Vulnerability_Index/MapServer/export", + "shareable_url": true, + "arcgis_layers": "2", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "B71BEF08-879B-43A2-9A68-7D24EFBD6A2E", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={B71BEF08-879B-43A2-9A68-7D24EFBD6A2E}", + "source": "https://www.census.gov", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 253 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 373, + "fields": { + "name": "Ocean Sediment Thickness (NGDC, 2013)", + "slug_name": "ocean-sediment-thickness-ngdc-2013", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "8", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "9FA4B287-9D5C-4EEB-9ADC-04E3ECF960D1", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/OceanSedimentThicknessContours.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={9FA4B287-9D5C-4EEB-9ADC-04E3ECF960D1}", + "source": "MarineCadastre.gov", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 375, + "fields": { + "name": "Coastal Energy Facilities (NOAA, 2014)", + "slug_name": "coastal-energy-facilities-noaa-2014", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/OceanEnergy/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "DFD77A60-BE41-4E8A-B222-6B9C9E2113B2", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={DFD77A60-BE41-4E8A-B222-6B9C9E2113B2}", + "source": "http://marinecadastre.gov/data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251, + 460 + ], + "themes": [ + 10, + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 376, + "fields": { + "name": "Tidal Resource Potential - Mean Power Density (DOE, 2011)", + "slug_name": "tidal-resource-potential-mean-power-density-doe-2011", + "layer_type": "ArcRest", + "url": "http://cgis-srv2.ad.gatech.edu/arcgis/rest/services/TidalStream/usa_mp_tides/MapServer/export", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://geospatial.gatech.edu/Resources/USA_mean_power.zip", + "metadata": "http://www1.eere.energy.gov/water/pdfs/1023527.pdf", + "source": "http://marinecadastre.gov/data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 460 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 377, + "fields": { + "name": "Weather Radar Impact Zones (NOAA, 2012)", + "slug_name": "weather-radar-impact-zones-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.coast.noaa.gov/arcgis/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "14", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "091E2EF7-58F1-47D8-A86A-0B770387DCF1", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={4F0ECEA1-0077-442C-8E94-BCAC3FBE921A}", + "source": "http://marinecadastre.gov/data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 379, + "fields": { + "name": "Environmental Sensitivity Index - Cartographic (NOAA, 2004)", + "slug_name": "environmental-sensitivity-index-cartographic-noaa-2004", + "layer_type": "ArcRest", + "url": "https://idpgis.ncep.noaa.gov/arcgis/rest/services/NOS_ESI/ESI_Shoreline_Carto/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "A4C5C910-7849-401A-BD22-88B8C2E24074", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={A4C5C910-7849-401A-BD22-88B8C2E24074}", + "source": "http://response.restoration.noaa.gov/maps-and-spatial-data/environmental-sensitivity-index-esi-maps.html", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 381, + "fields": { + "name": "Environmental Sensitivity Index - Shoreline (NOAA, 2013)", + "slug_name": "environmental-sensitivity-index-shoreline-noaa-2013", + "layer_type": "ArcRest", + "url": "https://idpgis.ncep.noaa.gov/arcgis/rest/services/NOS_ESI/ESI_Shoreline/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "https://idpgis.ncep.noaa.gov/arcgis/rest/services/NOS_ESI/ESI_Shoreline/MapServer/legend", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "91E37FF6-C287-4136-8B76-C41C6B5D1524", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={91E37FF6-C287-4136-8B76-C41C6B5D1524}", + "source": "http://response.restoration.noaa.gov/maps-and-spatial-data/environmental-sensitivity-index-esi-maps.html", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 382, + "fields": { + "name": "Environmental Sensitivity Index - Most Sensitive (NOAA, 2013)", + "slug_name": "environmental-sensitivity-index-most-sensitive-noaa-2013", + "layer_type": "ArcRest", + "url": "https://idpgis.ncep.noaa.gov/arcgis/rest/services/NOS_ESI/ESI_Shoreline_Most_Sensitive/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "029BEA85-0F43-4C6C-8289-61F64FB27E1E", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={029BEA85-0F43-4C6C-8289-61F64FB27E1E}", + "source": "http://response.restoration.noaa.gov/maps-and-spatial-data/environmental-sensitivity-index-esi-maps.html", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 383, + "fields": { + "name": "Estuarine Bathymetry (NOAA, 2013)", + "slug_name": "estuarine-bathymetry-noaa-2013", + "layer_type": "ArcRest", + "url": "https://idpgis.ncep.noaa.gov/arcgis/rest/services/NOAA/NOAA_Estuarine_Bathymetry/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "E099D916-3613-471B-A884-A043F8D54DD6", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={E099D916-3613-471B-A884-A043F8D54DD6}", + "source": "http://estuarinebathymetry.noaa.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 310 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 384, + "fields": { + "name": "Precautionary Areas (NOAA, 2001)", + "slug_name": "precautionary-areas-noaa-2001", + "layer_type": "ArcRest", + "url": "http://encdirect.noaa.gov/arcgis/rest/services/cmsp/precautionary_areas/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "75300CD3-E3E6-4C54-A9B6-E48571F1A426", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={75300CD3-E3E6-4C54-A9B6-E48571F1A426}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 385, + "fields": { + "name": "Disposal Areas (NOAA, 2001)", + "slug_name": "disposal-areas-noaa-2001", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/NavigationAndMarineTransportation/MapServer/export", + "shareable_url": true, + "arcgis_layers": "11", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "C92ACF76-B21F-40CF-943B-B0921778E79B", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={C92ACF76-B21F-40CF-943B-B0921778E79B}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 386, + "fields": { + "name": "Raster Nautical Charts (NOAA, 2014)", + "slug_name": "raster-nautical-charts-noaa-2014", + "layer_type": "ArcRest", + "url": "http://seamlessrnc.nauticalcharts.noaa.gov/arcgis/rest/services/RNC/NOAA_RNC/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "4C0750F4-FC5E-4531-BDC3-71164AB72CEE", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://gis.charttools.noaa.gov/ocs_metadata/public/fgdc/seamless_RNC.xml", + "source": "http://www.nauticalcharts.noaa.gov/csdl/seamlessraster.html", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 387, + "fields": { + "name": "Ocean Economy - GDP (NOAA, 2014)", + "slug_name": "ocean-economy-gdp-noaa-2014", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/enow/ENOW_Counties/MapServer/export", + "shareable_url": true, + "arcgis_layers": "27", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "2C07422C-C62D-44AE-9FC2-D340B32FE4AD", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.csc.noaa.gov/htdata/SocioEconomic/ENOW.zip", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={2C07422C-C62D-44AE-9FC2-D340B32FE4AD}", + "source": "http://coast.noaa.gov/digitalcoast/data/enow", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 388, + "fields": { + "name": "Predicted Rock Outcrop (ATSML) ", + "slug_name": "predicted-rock-outcrop-atsml", + "layer_type": "ArcRest", + "url": "http://hornet.coas.oregonstate.edu/arcgis/rest/services/2014_BOEM/Predicted_Outcrop_WA_OR_NCA/MapServer/export", + "shareable_url": true, + "arcgis_layers": "5", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "BCC6022C-6AF1-4FBF-863B-5670BB33783F", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={BCC6022C-6AF1-4FBF-863B-5670BB33783F}", + "source": "activetectonics.coas.oregonstate.edu/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 389, + "fields": { + "name": "Seafloor Lithology (ATSML, 2014)", + "slug_name": "seafloor-lithology-atsml-2014", + "layer_type": "ArcRest", + "url": "http://hornet.coas.oregonstate.edu/arcgis/rest/services/2014_BOEM/Primary_Lithologic_Habitat_WA_OR_NCA/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "34984053-4171-4AB8-AC06-94416249BF56", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={34984053-4171-4AB8-AC06-94416249BF56}", + "source": "http://activetectonics.coas.oregonstate.edu/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 390, + "fields": { + "name": "Military Installations (USCB, 2010)", + "slug_name": "military-installations-uscb-2010", + "layer_type": "ArcRest", + "url": "http://tigerweb.geo.census.gov/ArcGIS/rest/services/Census2010/Special_Land_Use_Areas/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "40966B25-5377-4FE1-BED3-16B8FC1857DA", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://wcga-vm01.sdsc.edu/geoportal/rest/document?id={40966B25-5377-4FE1-BED3-16B8FC1857DA}", + "source": "https://www.census.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 391, + "fields": { + "name": "US Census Tracts (USCB, 2010)", + "slug_name": "us-census-tracts-uscb-2010", + "layer_type": "ArcRest", + "url": "http://tigerweb.geo.census.gov/arcgis/rest/services/TIGERweb/Tracts_Blocks/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "61AB743F-A99C-445E-AB67-4DAAF73DD6B8", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={61AB743F-A99C-445E-AB67-4DAAF73DD6B8}", + "source": "https://www.census.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 253 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 392, + "fields": { + "name": "Ocean Surface Currents - March (CORDC, 2014) ", + "slug_name": "ocean-surface-currents-march-cordc-2014", + "layer_type": "WMS", + "url": " http://pdx.axiomalaska.com/ncWMS/wms?/&STYLES=vector_arrow%2Frainbow&FORMAT=image%2Fpng&TRANSPARENT=true&TIME=1970-03-15", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "CORDC_MONTHLY%2Fsea_water_velocity", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?LAYERS=CORDC_MONTHLY%2Fsea_water_velocity&request=GetLegendGraphic&sld_version=1.1.0&layer=CORDC_MONTHLY%2Fsea_water_velocity&format=image/png", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "The Coastal Observing Research and Development Center (CORDC) HFRadar Network (HFRNet), in collaboration with the West Coast IOOS Regional Associations (SCCOOS, CeNCOOS and NANOOS), manages and distributes near-real-time ocean surface currents data measured by a network of shore-based High-Frequency (HF) radar stations. The HFRNet program measures estimates of surface current velocities representative of the upper 0.3 \u2013 2.5 meters of the ocean. Spatially-contiguous surface current mappings spanning the entire California and Oregon coasts have been available since 2008. As of 2014, the West Coast geographic range encompasses 65 physical radar stations from northern Baja California to southern Washington, and lower British Columbia. Data are available in four horizontal resolutions: 0.5, 1, 2 and 6 km. The OPeNDAP and WMS link types listed here are only for the 6 km (coarsest) resolution. The other resolutions are available via the CORDC THREDDS server. Data collection is on-going and near-real-time, with on-the-ground maintenance of individual radar stations provided by local partner organizations.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://cordc.ucsd.edu/projects/mapping/api/", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={A15A3008-EB7C-45B0-B547-12799990D85B}", + "source": "http://cordc.ucsd.edu/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 393, + "fields": { + "name": "Ocean Surface Currents - June (CORDC, 2014) ", + "slug_name": "ocean-surface-currents-june-cordc-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?/&STYLES=vector_arrow%2Frainbow&FORMAT=image%2Fpng&TRANSPARENT=true&TIME=1970-06-15", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "CORDC_MONTHLY%2Fsea_water_velocity", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?LAYERS=CORDC_MONTHLY%2Fsea_water_velocity&request=GetLegendGraphic&sld_version=1.1.0&layer=CORDC_MONTHLY%2Fsea_water_velocity&format=image/png", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "The Coastal Observing Research and Development Center (CORDC) HFRadar Network (HFRNet), in collaboration with the West Coast IOOS Regional Associations (SCCOOS, CeNCOOS and NANOOS), manages and distributes near-real-time ocean surface currents data measured by a network of shore-based High-Frequency (HF) radar stations. The HFRNet program measures estimates of surface current velocities representative of the upper 0.3 \u2013 2.5 meters of the ocean. Spatially-contiguous surface current mappings spanning the entire California and Oregon coasts have been available since 2008. As of 2014, the West Coast geographic range encompasses 65 physical radar stations from northern Baja California to southern Washington, and lower British Columbia. Data are available in four horizontal resolutions: 0.5, 1, 2 and 6 km. The OPeNDAP and WMS link types listed here are only for the 6 km (coarsest) resolution. The other resolutions are available via the CORDC THREDDS server. Data collection is on-going and near-real-time, with on-the-ground maintenance of individual radar stations provided by local partner organizations.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://cordc.ucsd.edu/projects/mapping/api/", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={A15A3008-EB7C-45B0-B547-12799990D85B}", + "source": "http://cordc.ucsd.edu/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 394, + "fields": { + "name": "Ocean Surface Currents - September (CORDC, 2014) ", + "slug_name": "ocean-surface-currents-september-cordc-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?/&STYLES=vector_arrow%2Frainbow&FORMAT=image%2Fpng&TRANSPARENT=true&TIME=1970-09-15", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "CORDC_MONTHLY%2Fsea_water_velocity", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?LAYERS=CORDC_MONTHLY%2Fsea_water_velocity&request=GetLegendGraphic&sld_version=1.1.0&layer=CORDC_MONTHLY%2Fsea_water_velocity&format=image/png", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "The Coastal Observing Research and Development Center (CORDC) HFRadar Network (HFRNet), in collaboration with the West Coast IOOS Regional Associations (SCCOOS, CeNCOOS and NANOOS), manages and distributes near-real-time ocean surface currents data measured by a network of shore-based High-Frequency (HF) radar stations. The HFRNet program measures estimates of surface current velocities representative of the upper 0.3 \u2013 2.5 meters of the ocean. Spatially-contiguous surface current mappings spanning the entire California and Oregon coasts have been available since 2008. As of 2014, the West Coast geographic range encompasses 65 physical radar stations from northern Baja California to southern Washington, and lower British Columbia. Data are available in four horizontal resolutions: 0.5, 1, 2 and 6 km. The OPeNDAP and WMS link types listed here are only for the 6 km (coarsest) resolution. The other resolutions are available via the CORDC THREDDS server. Data collection is on-going and near-real-time, with on-the-ground maintenance of individual radar stations provided by local partner organizations.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://cordc.ucsd.edu/projects/mapping/api/", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={A15A3008-EB7C-45B0-B547-12799990D85B}", + "source": "http://cordc.ucsd.edu/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 396, + "fields": { + "name": "Monthly Averaged Winds - January (COAMPS, 2014) ", + "slug_name": "monthly-averaged-winds-january-coamps-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?/&STYLES=vector_arrow%2Frainbow&FORMAT=image%2Fpng&TRANSPARENT=true&TIME=1970-01-15", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_MONTHLY_WINDS/wind", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_MONTHLY_WINDS/wind&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "411AEE69-27A8-4CA4-A222-407CB527CE54", + "description": "This dataset consists of monthly-averaged modeled wind data from September 2013-August 2014, from the Coupled Ocean/Atmosphere Mesoscale Prediction System (COAMPS\u2122) model. Data are 4 km resolution, spanning California.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://cdip.ucsd.edu/share/IOOS_WCODP_products/IOOS_WCODP_products/COAMPS_GTIFF.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={411AEE69-27A8-4CA4-A222-407CB527CE54}", + "source": "http://www.nrlmry.navy.mil/coamps-web/web/cencoos?&spg=1", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 397, + "fields": { + "name": "Monthly Averaged Winds - March (COAMPS, 2014) ", + "slug_name": "monthly-averaged-winds-march-coamps-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?/&STYLES=vector_arrow%2Frainbow&FORMAT=image%2Fpng&TRANSPARENT=true&TIME=1970-03-15", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_MONTHLY_WINDS/wind", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_MONTHLY_WINDS/wind&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "This dataset consists of monthly-averaged modeled wind data from September 2013-August 2014, from the Coupled Ocean/Atmosphere Mesoscale Prediction System (COAMPS\u2122) model. Data are 4 km resolution, spanning California.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://cdip.ucsd.edu/share/IOOS_WCODP_products/IOOS_WCODP_products/COAMPS_GTIFF.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={411AEE69-27A8-4CA4-A222-407CB527CE54}", + "source": "http://www.nrlmry.navy.mil/coamps-web/web/cencoos?&spg=1", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 398, + "fields": { + "name": "Monthly Averaged Winds - June (COAMPS, 2014) ", + "slug_name": "monthly-averaged-winds-june-coamps-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?/&STYLES=vector_arrow%2Frainbow&FORMAT=image%2Fpng&TRANSPARENT=true&TIME=1970-06-15", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_MONTHLY_WINDS/wind", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_MONTHLY_WINDS/wind&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "This dataset consists of monthly-averaged modeled wind data from September 2013-August 2014, from the Coupled Ocean/Atmosphere Mesoscale Prediction System (COAMPS\u2122) model. Data are 4 km resolution, spanning California.\r\n", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://cdip.ucsd.edu/share/IOOS_WCODP_products/IOOS_WCODP_products/COAMPS_GTIFF.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={411AEE69-27A8-4CA4-A222-407CB527CE54}", + "source": "http://www.nrlmry.navy.mil/coamps-web/web/cencoos?&spg=1", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 399, + "fields": { + "name": "Monthly Averaged Winds - August (COAMPS, 2014) ", + "slug_name": "monthly-averaged-winds-august-coamps-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?/&STYLES=vector_arrow%2Frainbow&FORMAT=image%2Fpng&TRANSPARENT=true&TIME=1970-10-15", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_MONTHLY_WINDS/wind", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_MONTHLY_WINDS/wind&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "This dataset consists of monthly-averaged modeled wind data from September 2013-August 2014, from the Coupled Ocean/Atmosphere Mesoscale Prediction System (COAMPS\u2122) model. Data are 4 km resolution, spanning California.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://cdip.ucsd.edu/share/IOOS_WCODP_products/IOOS_WCODP_products/COAMPS_GTIFF.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={411AEE69-27A8-4CA4-A222-407CB527CE54}", + "source": "http://www.nrlmry.navy.mil/coamps-web/web/cencoos?&spg=1", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 400, + "fields": { + "name": "Coastal Vulnerability Index (USGS, 2011)", + "slug_name": "coastal-vulnerability-index-usgs-2011", + "layer_type": "ArcRest", + "url": "http://coastalmap.marine.usgs.gov/cmgp/rest/services/National/coastal_vulnerability_index/MapServer/export", + "shareable_url": true, + "arcgis_layers": "9", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "4E86E73C-0B72-4192-958C-614C3BBF69B9", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={4E86E73C-0B72-4192-958C-614C3BBF69B9}", + "source": "http://pubs.usgs.gov/dds/dds68/htmldocs/data.htm", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249, + 403 + ], + "themes": [ + 11, + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 401, + "fields": { + "name": "Sidescan SONAR Mosaic (USGS, 2010)", + "slug_name": "sidescan-sonar-mosaic-usgs-2010", + "layer_type": "ArcRest", + "url": "http://coastalmap.marine.usgs.gov/cmgp/rest/services/National/gloria/MapServer/export", + "shareable_url": true, + "arcgis_layers": "72", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 402, + "fields": { + "name": "Seafloor Sediment - USSeabed (USGS, 2011)", + "slug_name": "seafloor-sediment-usseabed-usgs-2011", + "layer_type": "ArcRest", + "url": "http://coastalmap.marine.usgs.gov/cmgp/rest/services/National/usSEABED/MapServer/export", + "shareable_url": true, + "arcgis_layers": "38", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "D31BE1FD-6439-4464-98FB-B699985B8D45", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://pubs.usgs.gov/ds/2006/182/data/pac_ext.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={D31BE1FD-6439-4464-98FB-B699985B8D45}", + "source": "walrus.wr.usgs.gov/usseabed/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 403, + "fields": { + "name": "Sea Level Rise", + "slug_name": "sea-level-rise", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 339, + 330, + 400, + 469 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 405, + "fields": { + "name": "California Long Term Shoreline Change Rates (USGS, 2011)", + "slug_name": "california-long-term-shoreline-change-rates-usgs-2011", + "layer_type": "ArcRest", + "url": "http://coastalmap.marine.usgs.gov/cmgp/rest/services/National/slc_LongTerm/MapServer/export", + "shareable_url": true, + "arcgis_layers": "56", + "wms_slug": "", + "is_sublayer": true, + "legend": "http://i.imgur.com/vZRcBsM.png", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "4CAF495A-B6E4-4304-849F-FB351C305A29", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={4CAF495A-B6E4-4304-849F-FB351C305A29}", + "source": "http://coastal.er.usgs.gov/shoreline-change/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 406, + "fields": { + "name": "California Shoreline Change Baseline (USGS, 2011)", + "slug_name": "california-shoreline-change-baseline-usgs-2011", + "layer_type": "ArcRest", + "url": "http://coastalmap.marine.usgs.gov/cmgp/rest/services/National/slc_OffshoreBaseline/MapServer/export", + "shareable_url": true, + "arcgis_layers": "11", + "wms_slug": "", + "is_sublayer": true, + "legend": "http://i.imgur.com/84sxEGt.png", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "3AF09511-E377-47D7-B059-F00D67C9502D", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={3AF09511-E377-47D7-B059-F00D67C9502D}", + "source": "http://coastal.er.usgs.gov/shoreline-change/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 407, + "fields": { + "name": "California Short Term Shoreline Change Rates (USGS, 2011)", + "slug_name": "california-short-term-shoreline-change-rates-usgs-2011", + "layer_type": "ArcRest", + "url": "http://coastalmap.marine.usgs.gov/cmgp/rest/services/National/slc_ShortTerm/MapServer/export", + "shareable_url": true, + "arcgis_layers": "56", + "wms_slug": "", + "is_sublayer": true, + "legend": "http://i.imgur.com/vZRcBsM.png", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "4DB3594F-AE75-4FE5-9B06-040740144384", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={4DB3594F-AE75-4FE5-9B06-040740144384}", + "source": "http://coastal.er.usgs.gov/shoreline-change/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 408, + "fields": { + "name": "California Historic Shoreline (USGS, 2011)", + "slug_name": "california-historic-shoreline-usgs-2011", + "layer_type": "ArcRest", + "url": "http://coastalmap.marine.usgs.gov/cmgp/rest/services/National/slc_HistoricShoreline/MapServer/export", + "shareable_url": true, + "arcgis_layers": "381", + "wms_slug": "", + "is_sublayer": true, + "legend": "http://i.imgur.com/9GrvIBO.png", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "D1EB591E-5AEF-4F7B-A0EF-AFE9F07DA84A", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={D1EB591E-5AEF-4F7B-A0EF-AFE9F07DA84A}", + "source": "http://coastal.er.usgs.gov/shoreline-change/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 410, + "fields": { + "name": "Danger Zones and Restricted Areas (NOAA, 2012)", + "slug_name": "danger-zones-and-restricted-areas-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.coast.noaa.gov/arcgis/rest/services/MarineCadastre/NavigationAndMarineTransportation/MapServer/export", + "shareable_url": true, + "arcgis_layers": "9", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "666F2A4B-EE8E-4475-9FD3-6ADC8D3EDE19", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/DangerZonesAndRestrictedAreas.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={29C70E50-24B2-46B2-9223-0447E14561F6}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 411, + "fields": { + "name": "Undersea Place Names (NOAA, 2014)", + "slug_name": "undersea-place-names-noaa-2014", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/PhysicalOceanographicAndMarineHabitat/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "2F6FB64B-B06D-491D-AFE6-A1C8A8C01026", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.csc.noaa.gov/pub/MSP/UnderseaFeaturePlaceNames.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={5238DA2C-6B31-4A47-9119-9FDE44ECDD57}", + "source": "marinecadastre.gov", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 414, + "fields": { + "name": "Extent of Mid-Water Trawling, 2002-2006 (NOAA, 2012)", + "slug_name": "extent-of-mid-water-trawling-2002-2006-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_MidwaterTrawl_Per1/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "085A7656-F491-408C-A367-693B0A942A62", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/midtrawlBefor_ExtentPolygon.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={085A7656-F491-408C-A367-693B0A942A62}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 415, + "fields": { + "name": "Intensity of Mid-Water Trawling, 2002-2006 (NOAA, 2012)", + "slug_name": "intensity-of-mid-water-trawling-2002-2006-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_MidwaterTrawl_Per1/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "E5F90177-CE10-455D-8318-5AC45DEF4918", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/MidtrawlBefore.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={E5F90177-CE10-455D-8318-5AC45DEF4918}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 416, + "fields": { + "name": "Extent of Mid-Water Trawling, 2006-2010 (NOAA, 2012)", + "slug_name": "extent-of-mid-water-trawling-2006-2010-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_MidwaterTrawl_Per2/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "43F97C1B-45DC-4499-BC02-589789D3299B", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/midtrawlAfter_ExtentPolygon.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={43F97C1B-45DC-4499-BC02-589789D3299B}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 417, + "fields": { + "name": "Intensity of Mid-Water Trawling, 2006-2010 (NOAA, 2012)", + "slug_name": "intensity-of-mid-water-trawling-2006-2010-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_MidwaterTrawl_Per2/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "ADFF8DAA-1B7F-4E4D-9BE0-7C7707E5C9CD", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/MidtrawlAfter.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={ADFF8DAA-1B7F-4E4D-9BE0-7C7707E5C9CD}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 418, + "fields": { + "name": "Extent of Fixed Gear Fishing, 2002-2006 (NOAA, 2012)", + "slug_name": "extent-of-fixed-gear-fishing-2002-2006-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_FixedGear_Per1/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "A1131846-393A-4BAD-A8D2-EB8E1742EC95", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/fixgearBefor_ExtentPolygon.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={A1131846-393A-4BAD-A8D2-EB8E1742EC95}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 419, + "fields": { + "name": "Intensity of Fixed Gear Fishing, 2002-2006 (NOAA, 2012)", + "slug_name": "intensity-of-fixed-gear-fishing-2002-2006-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_FixedGear_Per1/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "62DB698E-1709-458F-A3C9-0FBE3CC4C98A", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/FixedgearBefore.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={62DB698E-1709-458F-A3C9-0FBE3CC4C98A}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 420, + "fields": { + "name": "Extent of Fixed Gear Fishing, 2006-2010 (NOAA, 2012)", + "slug_name": "extent-of-fixed-gear-fishing-2006-2010-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_FixedGear_Per2/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "3312A3C1-BB34-435A-9ACA-FF6671F12560", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/fixgearAfter_ExtentPolygon.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={3312A3C1-BB34-435A-9ACA-FF6671F12560}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 421, + "fields": { + "name": "Intensity of Fixed Gear Fishing, 2006-2010 (NOAA, 2012)", + "slug_name": "intensity-of-fixed-gear-fishing-2006-2010-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_FixedGear_Per2/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "A5965588-59D5-44EA-A256-4ACBBB5617AF", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/FixedgearAfter.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={A5965588-59D5-44EA-A256-4ACBBB5617AF}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 422, + "fields": { + "name": "Extent of Bottom Trawling, 2002-2006 (NOAA, 2012)", + "slug_name": "extent-of-bottom-trawling-2002-2006-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_BottomTrawl_Per1/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "DEFF56E3-BA7B-4935-A540-919B9A12BADD", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/bottrawlBefor_ExtentPolygon.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={DEFF56E3-BA7B-4935-A540-919B9A12BADD}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": true, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 423, + "fields": { + "name": "Intensity of Bottom Trawling, 2002-2006 (NOAA, 2012)", + "slug_name": "intensity-of-bottom-trawling-2002-2006-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_BottomTrawl_Per1/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "38B4DA83-FD2E-43ED-A6DA-D492FFDE885D", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/BottrawlBefore.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={38B4DA83-FD2E-43ED-A6DA-D492FFDE885D}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 424, + "fields": { + "name": "Extent of Bottom Trawling, 2006-2010 (NOAA, 2012)", + "slug_name": "extent-of-bottom-trawling-2006-2010-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_BottomTrawl_Per2/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "A2149702-3F1F-4959-AEF3-58D4EB1EB729", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/bottrawlAfter_ExtentPolygon.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={A2149702-3F1F-4959-AEF3-58D4EB1EB729}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 425, + "fields": { + "name": "Intensity of Bottom Trawling, 2006-2010 (NOAA, 2012)", + "slug_name": "intensity-of-bottom-trawling-2006-2010-noaa-2012", + "layer_type": "ArcRest", + "url": "https://www.webapps.nwfsc.noaa.gov/arcgis/rest/services/FRAM/EFH_Phase1_FishingEffort_2002_2010_BottomTrawl_Per2/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "E6AC448C-E8DC-42D2-8644-13D9F29FE36A", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://efh-catalog.coas.oregonstate.edu/EFH_Downloads/T2/BottrawlAfter.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={E6AC448C-E8DC-42D2-8644-13D9F29FE36A}", + "source": "http://efh-catalog.coas.oregonstate.edu/overview/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 426, + "fields": { + "name": "Blue Whale, Pacific Summer ", + "slug_name": "blue-whale-pacific-summer", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/MarineMammalsAndSeaTurtles/MapServer/export", + "shareable_url": true, + "arcgis_layers": "43", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "CC0EE87F-9A08-43DA-98C0-17925223D698", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={CC0EE87F-9A08-43DA-98C0-17925223D698}", + "source": "http://marinecadastre.gov/data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 427, + "fields": { + "name": "Fin Whale, Pacific Summer ", + "slug_name": "fin-whale-pacific-summer", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/MarineMammalsAndSeaTurtles/MapServer/export", + "shareable_url": true, + "arcgis_layers": "38", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "BD771397-335F-4F10-9785-EC1A65381201", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={BD771397-335F-4F10-9785-EC1A65381201}", + "source": "http://marinecadastre.gov/data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 428, + "fields": { + "name": "Humpback Whale, Pacific Summer", + "slug_name": "humpback-whale-pacific-summer", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/MarineMammalsAndSeaTurtles/MapServer/export", + "shareable_url": true, + "arcgis_layers": "35", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "0575FDEC-17EB-4216-8E28-48B301F5CD14", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={0575FDEC-17EB-4216-8E28-48B301F5CD14}", + "source": "http://marinecadastre.gov/data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 429, + "fields": { + "name": "Sperm Whale, Pacific Summer", + "slug_name": "sperm-whale-pacific-summer", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/MarineMammalsAndSeaTurtles/MapServer/export", + "shareable_url": true, + "arcgis_layers": "42", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "A959489D-2EDC-4842-A97F-BE71CB97C68E", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={A959489D-2EDC-4842-A97F-BE71CB97C68E}", + "source": "http://marinecadastre.gov/data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 430, + "fields": { + "name": "COAMPS Ground and Sea Surface Temperature, 4km (Navy, 2015)", + "slug_name": "coamps-ground-and-sea-surface-temperature-4km-navy-2015", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_4KM_GRND_SEA_TEMP/temperature_of_ground_or_sea", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_4KM_GRND_SEA_TEMP/temperature_of_ground_or_sea&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "5053998D-1A79-4403-94EF-670E5987974E", + "description": "Near-real-time 48-hour weather forecasts from the new CeNCOOS COAMPS model run (August 2013 - Present). The service displays the most recent time step for the layer. For older data, look at the COAMPS Forecast [2012 - 2013] layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, developed and run by the Naval Research Laboratory (NRL) in Monterey, CA, is a numerical weather prediction model. This model run has a resolution of 4km and covers the coastal ocean from Oregon to Mexico. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity and Wind. Other atmospheric variables and additional altitude layers are available through the GODAE server ie. heat flux, sea level pressure, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/ NRL COAMPS page: http://www.nrlmry.navy.mil/coamps-web/web/cencoos GODAE server: http://www.usgodae.org/pub/outgoing/fnmoc/models/coamps/calif/cencoos/", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={5053998D-1A79-4403-94EF-670E5987974E}", + "source": "http://www.cencoos.org/sections/models/coamps/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 431, + "fields": { + "name": "Sea Surface Salinity, Weekly (NASA, 2014)", + "slug_name": "sea-surface-salinity-weekly-nasa-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "Aquarius_SSS_Weekly/SSS", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=Aquarius_SSS_Weekly/SSS&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "9625013B-A5A7-427A-8533-0F4C6E797942", + "description": "Aquarius Level 3 sea surface salinity (SSS) standard mapped image data contains gridded 1 degree spatial resolution SSS averaged over daily, 7 day, monthly, and seasonal time scales. This particular data set is the Weekly sea surface salinity product for version 3.0 of the Aquarius data set, which is the official second release of the operational data from AQUARIUS/SAC-D mission. The service displays the most recent time step for the layer. The Aquarius instrument is onboard the AQUARIUS/SAC-D satellite, a collaborative effort between NASA and the Argentinian Space Agency Comision Nacional de Actividades Espaciales (CONAE). The instrument consists of three radiometers in push broom alignment at incidence angles of 29, 38, and 46 degrees incidence angles relative to the shadow side of the orbit. Footprints for the beams are: 76 km (along-track) x 94 km (cross-track), 84 km x 120 km and 96km x 156 km, yielding a total cross-track swath of 370 km. The radiometers measure brightness temperature at 1.413 GHz in their respective horizontal and vertical polarizations (TH and TV). A scatterometer operating at 1.26 GHz measures ocean backscatter in each footprint that is used for surface roughness corrections in the estimation of salinity. The scatterometer has an approximate 390km swath.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={9625013B-A5A7-427A-8533-0F4C6E797942}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 432, + "fields": { + "name": "Wind Speed (NASA, 2014)", + "slug_name": "wind-speed-nasa-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "Aquarius_scat_wind_speed_Trimonthly/scat_wind_speed", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=Aquarius_scat_wind_speed_Trimonthly/scat_wind_speed&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "9C0B8E3D-1C20-417C-8C78-F6D25DDD4966", + "description": "Aquarius Level 3 ocean surface wind speed standard mapped image data contains gridded 1 degree spatial resolution wind speed data averaged over daily, 7 day, monthly, and seasonal time scales. This particular data set is the Seasonal wind speed product for version 3.0 of the Aquarius data set, which is the official second release of the operational data from AQUARIUS/SAC-D mission. The service displays the most recent time step for the layer. The Aquarius instrument is onboard the AQUARIUS/SAC-D satellite, a collaborative effort between NASA and the Argentinian Space Agency Comision Nacional de Actividades Espaciales (CONAE). The instrument consists of three radiometers in push broom alignment at incidence angles of 29, 38, and 46 degrees incidence angles relative to the shadow side of the orbit. Footprints for the beams are: 76 km (along-track) x 94 km (cross-track), 84 km x 120 km and 96km x 156 km, yielding a total cross-track swath of 370 km. The radiometers measure brightness temperature at 1.413 GHz in their respective horizontal and vertical polarizations (TH and TV). A scatterometer operating at 1.26 GHz measures ocean backscatter in each footprint that is used for surface roughness corrections in the estimation of salinity. The scatterometer has an approximate 390km swath.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={9C0B8E3D-1C20-417C-8C78-F6D25DDD4966}", + "source": "HTTP://PODAAC.JPL.NASA.GOV/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 433, + "fields": { + "name": "COAMPS Wind, 4km (Navy, 2015)", + "slug_name": "coamps-wind-4km-navy-2015", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_4KM_10M_WIND/wind", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_4KM_10M_WIND/wind&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "EB74D7D4-2F70-48B1-8F90-F3F91AEB62B6", + "description": "Near-real-time 48-hour weather forecasts from the new CeNCOOS COAMPS model run (August 2013 - Present). The service displays the most recent time step for the layer. For older data, look at the COAMPS Forecast [2012 - 2013] layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, developed and run by the Naval Research Laboratory (NRL) in Monterey, CA, is a numerical weather prediction model. This model run has a resolution of 4km and covers the coastal ocean from Oregon to Mexico. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity and Wind. Other atmospheric variables and additional altitude layers are available through the GODAE server ie. heat flux, sea level pressure, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={EB74D7D4-2F70-48B1-8F90-F3F91AEB62B6}", + "source": "http://www.cencoos.org/sections/models/coamps/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 434, + "fields": { + "name": "COAMPS Cloud Base Altitude (Navy, 2015)", + "slug_name": "coamps-cloud-base-altitude-navy-2015", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_4KM_CLD_BASE/cloud_base", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_4KM_CLD_BASE/cloud_base&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "13172E65-719D-4F92-A98A-598ED6C834DC", + "description": "Near-real-time 48-hour weather forecasts from the new CeNCOOS COAMPS model run (August 2013 - Present). The service displays the most recent time step for the layer. For older data, look at the COAMPS Forecast [2012 - 2013] layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, developed and run by the Naval Research Laboratory (NRL) in Monterey, CA, is a numerical weather prediction model. This model run has a resolution of 4km and covers the coastal ocean from Oregon to Mexico. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity and Wind. Other atmospheric variables and additional altitude layers are available through the GODAE server ie. heat flux, sea level pressure, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/ NRL COAMPS page: ", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={13172E65-719D-4F92-A98A-598ED6C834DC}", + "source": "http://www.cencoos.org/sections/models/coamps/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 435, + "fields": { + "name": "Modeled Ocean Currents, Forecast (ROMS, 2014)", + "slug_name": "modeled-ocean-currents-forecast-roms-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "NOAA_CSDL_ROMS/current", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=NOAA_CSDL_ROMS/current&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "D7EF7B41-F623-4D2B-A458-F3E5A8A746D5", + "description": "The California ROMS model extends from just north of the CA-Oregon border south to Mexico and has a resolution of 3 km. Near-real-time forecasts (72 hr) and nowcasts are available for sea surface height, water temperature, salinity, and currents. The service displays the most recent time step for the layer.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={D7EF7B41-F623-4D2B-A458-F3E5A8A746D5}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 436, + "fields": { + "name": "Sea Surface Salinity, Daily (NASA, 2014)", + "slug_name": "sea-surface-salinity-daily-nasa-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "Aquarius_SSS_Daily/SSS", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=Aquarius_SSS_Daily/SSS&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "E4D4EA59-4325-4B45-B07E-7CEF538E9EF1", + "description": "Aquarius Level 3 sea surface salinity (SSS) standard mapped image data contains gridded 1 degree spatial resolution SSS averaged over daily, 7 day, monthly, and seasonal time scales. This particular data set is the Daily sea surface salinity product for version 3.0 of the Aquarius data set, which is the official second release of the operational data from AQUARIUS/SAC-D mission. The service displays the most recent time step for the layer. The Aquarius instrument is onboard the AQUARIUS/SAC-D satellite, a collaborative effort between NASA and the Argentinian Space Agency Comision Nacional de Actividades Espaciales (CONAE). The instrument consists of three radiometers in push broom alignment at incidence angles of 29, 38, and 46 degrees incidence angles relative to the shadow side of the orbit. Footprints for the beams are: 76 km (along-track) x 94 km (cross-track), 84 km x 120 km and 96km x 156 km, yielding a total cross-track swath of 370 km. The radiometers measure brightness temperature at 1.413 GHz in their respective horizontal and vertical polarizations (TH and TV). A scatterometer operating at 1.26 GHz measures ocean backscatter in each footprint that is used for surface roughness corrections in the estimation of salinity. The scatterometer has an approximate 390km swath.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={E4D4EA59-4325-4B45-B07E-7CEF538E9EF1}", + "source": "HTTP://PODAAC.JPL.NASA.GOV/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 437, + "fields": { + "name": "Sea Surface Salinity, Monthly (NASA, 2014)", + "slug_name": "sea-surface-salinity-monthly-nasa-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "Aquarius_SSS_Monthly/SSS", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=Aquarius_SSS_Monthly/SSS&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "8CFD0970-8640-4C0C-9DB7-F6EFD1909FFD", + "description": "Aquarius Level 3 sea surface salinity (SSS) standard mapped image data contains gridded 1 degree spatial resolution SSS averaged over daily, 7 day, monthly, and seasonal time scales. This particular data set is the Monthly sea surface salinity product for version 3.0 of the Aquarius data set, which is the official second release of the operational data from AQUARIUS/SAC-D mission. The service displays the most recent time step for the layer. The Aquarius instrument is onboard the AQUARIUS/SAC-D satellite, a collaborative effort between NASA and the Argentinian Space Agency Comision Nacional de Actividades Espaciales (CONAE). The instrument consists of three radiometers in push broom alignment at incidence angles of 29, 38, and 46 degrees incidence angles relative to the shadow side of the orbit. Footprints for the beams are: 76 km (along-track) x 94 km (cross-track), 84 km x 120 km and 96km x 156 km, yielding a total cross-track swath of 370 km. The radiometers measure brightness temperature at 1.413 GHz in their respective horizontal and vertical polarizations (TH and TV). A scatterometer operating at 1.26 GHz measures ocean backscatter in each footprint that is used for surface roughness corrections in the estimation of salinity. The scatterometer has an approximate 390km swath.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={8CFD0970-8640-4C0C-9DB7-F6EFD1909FFD}", + "source": "HTTP://PODAAC.JPL.NASA.GOV", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 438, + "fields": { + "name": "Wind Speed, Weekly (NASA, 2014)", + "slug_name": "wind-speed-weekly-nasa-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "Aquarius_V3_scat_wind_speed_Weekly/scat_wind_speed", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=Aquarius_V3_scat_wind_speed_Weekly/scat_wind_speed&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "15FDF344-BFF9-47BF-AF5B-3CD967E5B5E2", + "description": "Aquarius Level 3 sea surface salinity (SSS) standard mapped image data contains gridded 1 degree spatial resolution SSS averaged over daily, 7 day, monthly, and seasonal time scales. This particular data set is the Weekly sea surface salinity product for version 3.0 of the Aquarius data set, which is the official second release of the operational data from AQUARIUS/SAC-D mission. The service displays the most recent time step for the layer. The Aquarius instrument is onboard the AQUARIUS/SAC-D satellite, a collaborative effort between NASA and the Argentinian Space Agency Comision Nacional de Actividades Espaciales (CONAE). The instrument consists of three radiometers in push broom alignment at incidence angles of 29, 38, and 46 degrees incidence angles relative to the shadow side of the orbit. Footprints for the beams are: 76 km (along-track) x 94 km (cross-track), 84 km x 120 km and 96km x 156 km, yielding a total cross-track swath of 370 km. The radiometers measure brightness temperature at 1.413 GHz in their respective horizontal and vertical polarizations (TH and TV). A scatterometer operating at 1.26 GHz measures ocean backscatter in each footprint that is used for surface roughness corrections in the estimation of salinity. The scatterometer has an approximate 390km swath.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={15FDF344-BFF9-47BF-AF5B-3CD967E5B5E2}", + "source": "HTTP://PODAAC.JPL.NASA.GOV", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 439, + "fields": { + "name": "Ocean Currents, Nowcast (ROMS, 2014)", + "slug_name": "ocean-currents-nowcast-roms-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "CA_DAS/sea_water_velocity", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=CA_DAS/sea_water_velocity&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "6073E47B-3195-4999-80B0-0D04AFAB96FF", + "description": "The California ROMS model extends from just north of the CA-Oregon border south to Mexico and has a resolution of 3 km. Near-real-time forecasts (72 hr) and nowcasts are available for sea surface height, water temperature, salinity, and currents. This model is operated by UCLA and Remote Sensing Solutions. The service displays the most recent time step for the layer.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={6073E47B-3195-4999-80B0-0D04AFAB96FF}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 440, + "fields": { + "name": "COAMPS Heat Flux (Navy, 2014)", + "slug_name": "coamps-heat-flux-navy-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_4KM_IR_FLUX/IR_heat_flux", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_4KM_IR_FLUX/IR_heat_flux&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "4B8F13D5-21E3-4D6D-9421-451CFFEAA4B3", + "description": "Near-real-time 48-hour weather forecasts from the new CeNCOOS COAMPS model run (August 2013 - Present). The service displays the most recent time step for the layer. For older data, look at the COAMPS Forecast [2012 - 2013] layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, developed and run by the Naval Research Laboratory (NRL) in Monterey, CA, is a numerical weather prediction model. This model run has a resolution of 4km and covers the coastal ocean from Oregon to Mexico. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity, sea level pressure and Wind. Other atmospheric variables and additional altitude layers are available through the GODAE server ie. heat flux, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/ NRL COAMPS page: ", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={4B8F13D5-21E3-4D6D-9421-451CFFEAA4B3}", + "source": "http://www.cencoos.org/sections/models/coamps/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 441, + "fields": { + "name": "COAMPS Air Pressure, 4km (Navy, 2015)", + "slug_name": "coamps-air-pressure-4km-navy-2015", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_4KM_PRES_MSL/pressure_reduce_to_MSL", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_4KM_PRES_MSL/pressure_reduce_to_MSL&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "C3FF12A7-274E-48D7-8D7E-A5486142EF8B", + "description": "Near-real-time 48-hour weather forecasts from the new CeNCOOS COAMPS model run (August 2013 - Present). The service displays the most recent time step for the layer. For older data, look at the COAMPS Forecast [2012 - 2013] layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, developed and run by the Naval Research Laboratory (NRL) in Monterey, CA, is a numerical weather prediction model. This model run has a resolution of 4km and covers the coastal ocean from Oregon to Mexico. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity, sea level pressure and Wind. Other atmospheric variables and additional altitude layers are available through the GODAE server ie. heat flux, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/ ", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={C3FF12A7-274E-48D7-8D7E-A5486142EF8B}", + "source": "http://www.cencoos.org/sections/models/coamps/ ", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 442, + "fields": { + "name": "COAMPS Air Temperature, 2m (Navy, 2015)", + "slug_name": "coamps-air-temperature-2m-navy-2015", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_4KM_2M_AIR_TEMP/air_temperature", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_4KM_2M_AIR_TEMP/air_temperature&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "E0A42CD5-B53E-42AB-A1C8-75747FDCFBF1", + "description": "Near-real-time 48-hour weather forecasts from the new CeNCOOS COAMPS model run (August 2013 - Present). The service displays the most recent time step for the layer. For older data, look at the COAMPS Forecast [2012 - 2013] layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, developed and run by the Naval Research Laboratory (NRL) in Monterey, CA, is a numerical weather prediction model. This model run has a resolution of 4km and covers the coastal ocean from Oregon to Mexico. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity and Wind. Other atmospheric variables and additional altitude layers are available through the GODAE server ie. heat flux, sea level pressure, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={E0A42CD5-B53E-42AB-A1C8-75747FDCFBF1}", + "source": "http://www.cencoos.org/sections/models/coamps/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 443, + "fields": { + "name": "COAMPS Relative Humidity (Navy, 2015)", + "slug_name": "coamps-relative-humidity-navy-2015", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_4KM_RLTV_HUM/relative_humidity", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_4KM_RLTV_HUM/relative_humidity&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "926A10BB-B9DA-4FEE-8E8B-8EBBA3517253", + "description": "Near-real-time 48-hour weather forecasts from the new CeNCOOS COAMPS model run (August 2013 - Present). The service displays the most recent time step for the layer. The service displays the most recent time step for the layer. For older data, look at the COAMPS Forecast [2012 - 2013] layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, developed and run by the Naval Research Laboratory (NRL) in Monterey, CA, is a numerical weather prediction model. This model run has a resolution of 4km and covers the coastal ocean from Oregon to Mexico. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity and Wind. Other atmospheric variables and additional altitude layers are available through the GODAE server ie. heat flux, sea level pressure, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/ ", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={926A10BB-B9DA-4FEE-8E8B-8EBBA3517253}", + "source": "http://www.cencoos.org/sections/models/coamps/ ", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 444, + "fields": { + "name": "COAMPS Total Precipitation, 12hr (Navy, 2015)", + "slug_name": "coamps-total-precipitation-12hr-navy-2015", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_4KM_TTL_PRCP/total_precipitation_12-hour", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_4KM_TTL_PRCP/total_precipitation_12-hour&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "A6C5E927-F9E4-4A6C-BE2F-06416924B3E7", + "description": "Near-real-time 48-hour weather forecasts from the new CeNCOOS COAMPS model run (August 2013 - Present). The service displays the most recent time step for the layer. For older data, look at the COAMPS Forecast [2012 - 2013] layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, developed and run by the Naval Research Laboratory (NRL) in Monterey, CA, is a numerical weather prediction model. This model run has a resolution of 4km and covers the coastal ocean from Oregon to Mexico. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity and Wind. Other atmospheric variables and additional altitude layers are available through the GODAE server ie. heat flux, sea level pressure, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={A6C5E927-F9E4-4A6C-BE2F-06416924B3E7}", + "source": "http://www.cencoos.org/sections/models/coamps/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 445, + "fields": { + "name": "COAMPS Solar Radiation, 4km (Navy, 2015)", + "slug_name": "coamps-solar-radiation-4km-navy-2015", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_4KM_SOL_RAD/Net_short-wave_radiation_surface", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_4KM_SOL_RAD/Net_short-wave_radiation_surface&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "DAD4ABE0-75C4-4F79-9BAE-ADBF5CAD1E86", + "description": "Near-real-time 48-hour weather forecasts from the new CeNCOOS COAMPS model run (August 2013 - Present). The service displays the most recent time step for the layer. For older data, look at the COAMPS Forecast [2012 - 2013] layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, developed and run by the Naval Research Laboratory (NRL) in Monterey, CA, is a numerical weather prediction model. This model run has a resolution of 4km and covers the coastal ocean from Oregon to Mexico. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity, sea level pressure and Wind. Other atmospheric variables and additional altitude layers are available through the GODAE server ie. heat flux, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={DAD4ABE0-75C4-4F79-9BAE-ADBF5CAD1E86}", + "source": "http://www.cencoos.org/sections/models/coamps/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 446, + "fields": { + "name": "COAMPS Visibility, 4km (Navy, 2015)", + "slug_name": "coamps-visibility-4km-navy-2015", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_4KM_VISIB/visibility", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_4KM_VISIB/visibility&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "6A564361-9B94-4C92-8B5A-A83E8BF1505C", + "description": "Near-real-time 48-hour weather forecasts from the new CeNCOOS COAMPS model run (August 2013 - Present). The service displays the most recent time step for the layer. For older data, look at the COAMPS Forecast [2012 - 2013] layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, developed and run by the Naval Research Laboratory (NRL) in Monterey, CA, is a numerical weather prediction model. This model run has a resolution of 4km and covers the coastal ocean from Oregon to Mexico. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity and Wind. Other atmospheric variables and additional altitude layers are available through the GODAE server ie. heat flux, sea level pressure, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={6A564361-9B94-4C92-8B5A-A83E8BF1505C}", + "source": "http://www.cencoos.org/sections/models/coamps/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 447, + "fields": { + "name": "COAMPS Historic Air Temperature, 2m (Navy, 2013)", + "slug_name": "coamps-historic-air-temperature-2m-navy-2013", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_MBAY_3KM_AIR_TEMP/air_temperature", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_MBAY_3KM_AIR_TEMP/air_temperature&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "50ABB223-B9FF-42DB-9594-64C5ABBF6958", + "description": "Historical 48-hour weather forecasts from the CeNCOOS COAMPS model (MBAY) from August 2012 to September 2013. The service displays the most recent time step for the layer. For newer data ( Aug 2013 - Present), look at the 'COAMPS Forecast' layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, (Naval Research Laboratory, Monterey, CA) provided 48-hour weather forecasts. This model run had a resolution of 3km and covered the coastal ocean from Oregon to Pt. Conception. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity and Winds. Other atmospheric variables and altitude layers are available through the GODAE server ie. heat flux, sea level pressure, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={50ABB223-B9FF-42DB-9594-64C5ABBF6958}", + "source": "http://www.cencoos.org/sections/models/coamps/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 448, + "fields": { + "name": "COAMPS Historic Ground and Sea Surface Temperature, 3km (Navy, 2013)", + "slug_name": "coamps-historic-ground-and-sea-surface-temperature-3km-navy-2013", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_MBAY_3KM_GRND_SEA_TEMP/temperature_of_ground_or_sea", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_MBAY_3KM_GRND_SEA_TEMP/temperature_of_ground_or_sea&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "D2F255E4-0256-4585-AE06-82D94B9B5127", + "description": "Historical 48-hour weather forecasts from the CeNCOOS COAMPS model (MBAY) from August 2012 to September 2013. For newer data ( Aug 2013 - Present), look at the 'COAMPS Forecast' layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, (Naval Research Laboratory, Monterey, CA) provided 48-hour weather forecasts. This model run had a resolution of 3km and covered the coastal ocean from Oregon to Pt. Conception. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity and Wind. Other atmospheric variables and altitude layers are available through the GODAE server ie. heat flux, sea level pressure, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={D2F255E4-0256-4585-AE06-82D94B9B5127}", + "source": "http://www.cencoos.org/sections/models/coamps", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 449, + "fields": { + "name": "COAMPS Historic Wind Velocity, 3km (Navy, 2015)", + "slug_name": "coamps-historic-wind-velocity-3km-navy-2015", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "COAMPS_MBAY_3KM_WIND_10M/u_component_wind_true_direction_all_geometries", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=COAMPS_MBAY_3KM_WIND_10M/u_component_wind_true_direction_all_geometries&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "285B9654-352D-4F82-B136-23D6FEDCEDA7", + "description": "Historical 48-hour weather forecasts from the CeNCOOS COAMPS model (MBAY) from August 2012 to September 2013. The service displays the most recent time step for the layer. For newer data ( Aug 2013 - Present), look at the 'COAMPS Forecast' layer. The Coupled Ocean/Atmosphere Mesoscale Prediction System, (Naval Research Laboratory, Monterey, CA) provided 48-hour weather forecasts. This model run had a resolution of 3km and covered the coastal ocean from Oregon to Pt. Conception. Variables available in the CeNCOOS data portal include: Total Precipitation, Visibility, Cloudbase, Air Temperature, Relative Humidity and Winds. Other atmospheric variables and altitude layers are available through the GODAE server ie. heat flux, sea level pressure, vorticity, geopotential height. More information: CeNCOOS COAMPS page: http://www.cencoos.org/sections/models/coamps/ ", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={285B9654-352D-4F82-B136-23D6FEDCEDA7}", + "source": "http://www.cencoos.org/sections/models/coamps/ ", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 450, + "fields": { + "name": "HYCOM Surface Currents (Navy, 2014)", + "slug_name": "hycom-surface-currents-navy-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "HYCOM/sea_water_velocity", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=HYCOM/sea_water_velocity&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "CAC076E0-8097-429F-A7EF-099A2091810C", + "description": "Forecasts of salinity, sea water temperature, and sea water velocity from the Global HYbrid Coordinate Ocean Model (HYCOM). HYCOM provides comparable resolution to satellite based SST and salinity values (1/12\ufffd resolution, or ~7 km spacing on average), and provides results in 32 vertical layers. Surface forcing is from NOGAPS. The service displays the most recent time step for the layer. More information is available from the HYCOM project (http://hycom.org/hycom/overview).", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={CAC076E0-8097-429F-A7EF-099A2091810C}", + "source": "http://hycom.org/hycom/overview", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 451, + "fields": { + "name": "Surface Temperature (NCEP, 2015)", + "slug_name": "surface-temperature-ncep-2015", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "NCEP_SKIN_TEMP/skt", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=NCEP_SKIN_TEMP/skt&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1E055EC3-0A27-42C6-BC40-193C2BFDC66F", + "description": "NCEP Reanalysis Daily Averages Surface Flux: Skin Temperature. The service displays the most recent time step for the layer. The NCEP/NCAR Reanalysis 1 project is using a state-of-the-art analysis/forecast system to perform data assimilation using past data from 1948 to the present. This model uses a subset of the NCEP Reanalysis data to display daily average surface level temperature values from January 1, 1948 to the present. Over land, NCEP surface skin temperatures represent the soil temperature at ground level. Over water, they represent the sea surface temperature. If sea ice cover is present, they represent the estimated temperature of the water surface below the ice (estimations which are often inaccurate). The spatial coverage of this dataset is 88.542N-88.542S, 0E-358.125E, covering the surface of the earth with a 192x94 T62 Gaussian grid. This model is updated daily and the most recent data is being displayed here.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={1E055EC3-0A27-42C6-BC40-193C2BFDC66F}", + "source": "HTTP://WWW.ESRL.NOAA.GOV/PSD/DATA/REANALYSIS/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 452, + "fields": { + "name": "Wind Speed, Daily (NASA, 2014)", + "slug_name": "wind-speed-daily-nasa-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "Aquarius_V3_scat_wind_speed_Daily/scat_wind_speed", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=Aquarius_V3_scat_wind_speed_Daily/scat_wind_speed&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "E931CAF0-4E4F-4E96-AE0D-64AE2BB05207", + "description": "Aquarius Level 3 ocean surface wind speed standard mapped image data contains gridded 1 degree spatial resolution wind speed data averaged over daily, 7 day, monthly, and seasonal time scales. This particular data set is the Daily wind speed product for version 3.0 of the Aquarius data set, which is the official second release of the operational data from AQUARIUS/SAC-D mission. The service displays the most recent time step for the layer. The Aquarius instrument is onboard the AQUARIUS/SAC-D satellite, a collaborative effort between NASA and the Argentinian Space Agency Comision Nacional de Actividades Espaciales (CONAE). The instrument consists of three radiometers in push broom alignment at incidence angles of 29, 38, and 46 degrees incidence angles relative to the shadow side of the orbit. Footprints for the beams are: 76 km (along-track) x 94 km (cross-track), 84 km x 120 km and 96km x 156 km, yielding a total cross-track swath of 370 km. The radiometers measure brightness temperature at 1.413 GHz in their respective horizontal and vertical polarizations (TH and TV). A scatterometer operating at 1.26 GHz measures ocean backscatter in each footprint that is used for surface roughness corrections in the estimation of salinity. The scatterometer has an approximate 390km swath.", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={E931CAF0-4E4F-4E96-AE0D-64AE2BB05207}", + "source": "HTTP://PODAAC.JPL.NASA.GOV/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 300 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 453, + "fields": { + "name": "NCOM Surface Velocity (Navy, 2014)", + "slug_name": "ncom-surface-velocity-navy-2014", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "NCOM_SOCAL/sea_water_velocity", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=NCOM_SOCAL/sea_water_velocity&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1EF6A553-E1F0-4A6F-B3C7-788CED0A6EC5", + "description": "The Regional NCOM models have a resolution of 1/36 deg. (3 km). The U.S. Navy Operational Global Ocean Model (NCOM), developed by the Naval Research Laboratory and maintained by the Naval Oceanographic Office, provides boundary conditions for the regional models. The Navy Coupled Ocean Data Assimilation System (NCODA) provides the data assimilation for NCOM including SSH, SST, and in situ observations. The service displays the most recent time step for the layer. For more information about NCOM see: http://www.opc.ncep.noaa.gov/newNCOM/NCOM_currents.shtml http://www.nrl.navy.mil/research/nrl-review/2003/ocean-science/barron/", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={1EF6A553-E1F0-4A6F-B3C7-788CED0A6EC5}", + "source": "http://www.opc.ncep.noaa.gov/newNCOM/NCOM_currents.shtml ", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 454, + "fields": { + "name": "Sea Surface Temperature (NASA, 2013)", + "slug_name": "sea-surface-temperature-nasa-2013", + "layer_type": "WMS", + "url": "http://pdx.axiomalaska.com/ncWMS/wms?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "G1_SST/analysed_sst", + "is_sublayer": true, + "legend": "http://pdx.axiomalaska.com/ncWMS/wms?REQUEST=GetLegendGraphic&LAYER=G1_SST/analysed_sst&PALETTE=alg", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1063E28A-EF5C-4938-8E37-46E1E06D1948", + "description": "A Group for High Resolution Sea Surface Temperature (GHRSST) Level 4 sea surface temperature analysis produced daily on an operational basis by the JPL OurOcean group using a multi-scale two-dimensional variational (MS-2DVAR) blending algorithm on a global 0.009 degree grid. The service displays the most recent time step for the layer. This Global 1 km SST (G1SST) analysis uses satellite data from sensors that include the Advanced Very High Resolution Radiometer (AVHRR), the Advanced Along Track Scanning Radiometer (AATSR), the Spinning Enhanced Visible and Infrared Imager (SEVIRI), the Advanced Microwave Scanning Radiometer-EOS (AMSRE), the Tropical Rainfall Measuring Mission Microwave Imager (TMI), the Moderate Resolution Imaging Spectroradiometer (MODIS), the Geostationary Operational Environmental Satellite (GOES) Imager, the Multi-Functional Transport Satellite 1R (MTSAT-1R) radiometer, and in situ data from drifting and moored buoys. URL: http://podaac.jpl.nasa.gov/dataset/JPL_OUROCEAN-L4UHfnd-GLOB-G1SST", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={1063E28A-EF5C-4938-8E37-46E1E06D1948}", + "source": "http://podaac.jpl.nasa.gov/dataset/JPL_OUROCEAN-L4UHfnd-GLOB-G1SST", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 455, + "fields": { + "name": "tEST SLR ", + "slug_name": "test-slr", + "layer_type": "ArcRest", + "url": "http://coast.noaa.gov/arcgis/rest/services/dc_slr/slr_1ft/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 456, + "fields": { + "name": "TEST SLR 3ft", + "slug_name": "test-slr-3ft", + "layer_type": "ArcRest", + "url": "http://coast.noaa.gov/arcgis/rest/services/dc_slr/slr_3ft/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 457, + "fields": { + "name": "TEST SLR 6FT", + "slug_name": "test-slr-6ft", + "layer_type": "ArcRest", + "url": "http://coast.noaa.gov/arcgis/rest/services/dc_slr/slr_6ft/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [], + "themes": [], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 458, + "fields": { + "name": "Seagrasses (NOAA, 2015)", + "slug_name": "seagrasses-noaa-2015", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/Seagrasses/MapServer/export", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "Seagrasses", + "is_sublayer": true, + "legend": "http://coast.noaa.gov/arcgis/services/MarineCadastre/Seagrasses/MapServer/WmsServer?request=GetLegendGraphic%26version=1.3.0%26format=image/png%26layer=0", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1BD34668-C0F3-4BBA-BE9A-03FEE99D3F37", + "description": "This map displays locations of patchy and continuous seagrasses on the Atlantic, Gulf of Mexico and Pacific coasts of the United States. Aquatic vascular vegetation beds dominated by submerged, rooted, vascular species or submerged or rooted floating freshwater tidal vascular vegetation. This is NOT a complete collection of seagrasses on the seafloor, nor are the locations to be considered exact. The presence and location of the seagrasses have been derived from multiple state and federal sources. These data are intended for coastal and ocean planning. Not for navigation. ", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/Seagrasses.zip", + "metadata": "ftp://ftp.coast.noaa.gov/pub/MSP/Seagrasses.zip", + "source": "marinecadastre.gov", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 460, + "fields": { + "name": "Renewable Ocean Energy", + "slug_name": "renewable-ocean-energy", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 376, + 266, + 480, + 481, + 358, + 278, + 375, + 477, + 350, + 479 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 461, + "fields": { + "name": "Flood Hazard Zones (FEMA, 2015)", + "slug_name": "flood-hazard-zones-fema-2015", + "layer_type": "ArcRest", + "url": "https://hazards.fema.gov/gis/nfhl/rest/services/public/NFHL/MapServer/export", + "shareable_url": true, + "arcgis_layers": "28", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 462, + "fields": { + "name": "Flood Hazard Zones 2 (FEMA, 2015)", + "slug_name": "flood-hazard-zones-2-fema-2015", + "layer_type": "WMS", + "url": "https://hazards.fema.gov/gis/nfhl/services/public/NFHLWMS/MapServer/WMSServer?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "4", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 463, + "fields": { + "name": "OR and WA Ocean Uses Atlas (NOAA, 2015)", + "slug_name": "or-and-wa-ocean-uses-atlas-noaa-2015", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/OceanUsesOregonWashingtonPROUA/MapServer/export", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "F9832A04-5189-428E-A2B6-C8E15140A4BF", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/OceanUsesOregonWashingtonPROUA.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={F9832A04-5189-428E-A2B6-C8E15140A4BF}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 464, + "fields": { + "name": "Commercial Fishery Closure Areas (WCODN, 2015) ", + "slug_name": "commercial-fishery-closure-areas-wcodn-2015", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/BOEM_Layers/MapServer/export", + "shareable_url": true, + "arcgis_layers": "10", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "ADF25918-776B-4327-A5AF-B554B925AE32", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.boem.gov/Fishing-Closures-Map-Package/", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={ADF25918-776B-4327-A5AF-B554B925AE32}", + "source": "http://www.boem.gov/Renewable-Energy-GIS-Data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 465, + "fields": { + "name": "Recreational Fishery Closures (WCODN, 2015)", + "slug_name": "recreational-fishery-closures-wcodn-2015", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/BOEM_Layers/MapServer/export", + "shareable_url": true, + "arcgis_layers": "9", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.boem.gov/Fishing-Closures-Map-Package/", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={ADF25918-776B-4327-A5AF-B554B925AE32}", + "source": "http://www.boem.gov/Renewable-Energy-GIS-Data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 466, + "fields": { + "name": "Rockfish Conservation Areas (WCODN, 2015)", + "slug_name": "rockfish-conservation-areas-wcodn-2015", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/BOEM_Layers/MapServer/export", + "shareable_url": true, + "arcgis_layers": "8", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "D3B998A9-9322-47B6-A800-54B8428E5AE7", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.boem.gov/Fishing-Closures-Map-Package/", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={D3B998A9-9322-47B6-A800-54B8428E5AE7}", + "source": "http://www.boem.gov/Renewable-Energy-GIS-Data/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 467, + "fields": { + "name": "Grande Ronde Ceded Lands (Confederated Tribes of the Grande Ronde, 2014)", + "slug_name": "grande-ronde-ceded-lands-confederated-tribes-of-the-grande-ronde-2014", + "layer_type": "ArcRest", + "url": "https://services.arcgis.com/rXhcPEmUJQ4OH6L2/ArcGIS/rest/services/Ceded_lands/FeatureServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 250 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 469, + "fields": { + "name": "Oregon Tsunami Evacuation Zones (DOGAMI 2013)", + "slug_name": "oregon-tsunami-evacuation-zones-dogami-2013", + "layer_type": "ArcRest", + "url": "http://www.oregongeology.org/arcgis/rest/services/Public/EvacuationZones/MapServer/export", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "2A536E89-E9EA-4B20-AC3A-C424A44C92D2", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://oe.oregonexplorer.info/ExternalContent/SpatialDataForDownload/DOGAMI_TsunamiEvacuationZones_2013.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={2A536E89-E9EA-4B20-AC3A-C424A44C92D2}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 403 + ], + "themes": [ + 12 + ], + "attribute_fields": [ + 62 + ], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 470, + "fields": { + "name": "OCS Withdrawal Areas (BOEM 2015)", + "slug_name": "ocs-withdrawal-areas-boem-2015", + "layer_type": "ArcRest", + "url": "https://www.coast.noaa.gov/arcgis/rest/services/MarineCadastre/BOEM_Layers/MapServer/export", + "shareable_url": true, + "arcgis_layers": "4", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "AFE65636-5EB5-43FD-88F6-72A97B41C2C3", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={AFE65636-5EB5-43FD-88F6-72A97B41C2C3}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 471, + "fields": { + "name": "OCS Proposed Areas (BOEM 2015)", + "slug_name": "ocs-proposed-areas-boem-2015", + "layer_type": "ArcRest", + "url": "https://www.coast.noaa.gov/arcgis/rest/services/MarineCadastre/BOEM_Layers/MapServer/export", + "shareable_url": true, + "arcgis_layers": "3", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "420DA17D-C7CC-4262-8EC1-15A5A93A4F74", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={420DA17D-C7CC-4262-8EC1-15A5A93A4F74}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 472, + "fields": { + "name": "OCS Planning Areas (BOEM 2003)", + "slug_name": "ocs-planning-areas-boem-2003", + "layer_type": "ArcRest", + "url": "https://gis.boem.gov/arcgis/rest/services/BOEM_BSEE/MMC_Layers/MapServer/export", + "shareable_url": true, + "arcgis_layers": "20", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "65E0063D-0C1E-4712-BCD3-886E356284BA", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.boem.gov//Oil-and-Gas-Energy-Program/Mapping-and-Data/Pacific-files/PC_PLANAREA.aspx", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={65E0063D-0C1E-4712-BCD3-886E356284BA}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 473, + "fields": { + "name": "Pacific Pipelines (BOEM 2007)", + "slug_name": "pacific-pipelines-boem-2007", + "layer_type": "ArcRest", + "url": "https://gis.boem.gov/arcgis/rest/services/BOEM_BSEE/MMC_Layers/MapServer/export", + "shareable_url": true, + "arcgis_layers": "2", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "9F8310FE-28A7-41F0-95E9-8145E73D582A", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://www.boem.gov/Oil-and-Gas-Energy-Program/Mapping-and-Data/Pacific-files/pc_pipe(2).aspx", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={9F8310FE-28A7-41F0-95E9-8145E73D582A}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 251 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 474, + "fields": { + "name": "West Coast Canopy Forming Kelp (WCODN 2015)", + "slug_name": "west-coast-canopy-forming-kelp-wcodn-2015", + "layer_type": "WMS", + "url": "https://coast.noaa.gov/arcgis/services/MarineCadastre/WestCoastKelp/MapServer/WMSServer?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "0", + "is_sublayer": true, + "legend": "http://coast.noaa.gov/arcgis/services/MarineCadastre/WestCoastKelp/MapServer/WmsServer?request=GetLegendGraphic%26version=1.3.0%26format=image/png%26layer=0", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "BCDE9B05-B196-4D65-8D31-8424C2602FC4", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/WestCoastCanopyFormingKelp.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/catalog/publication/downloadMetadata.jsp?uuid={BCDE9B05-B196-4D65-8D31-8424C2602FC4}", + "source": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/WestCoastKelp/MapServer/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254 + ], + "themes": [ + 9 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 475, + "fields": { + "name": "West Coast Littoral Cells - Shoreline (WCODN, 2015)", + "slug_name": "west-coast-littoral-cells-shoreline-wcodn-2015", + "layer_type": "ArcRest", + "url": "https://www.sciencebase.gov/arcgis/rest/services/Catalog/55db4088e4b0518e35470837/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "C135AE29-8539-475A-9D23-66CD7D2983EE", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "https://www.sciencebase.gov/catalog/file/get/55ce7d4be4b01487cbfc711d", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={C135AE29-8539-475A-9D23-66CD7D2983EE}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 476, + "fields": { + "name": "West Coast Littoral Cells - Polygon (WCODN, 2015)", + "slug_name": "west-coast-littoral-cells-polygon-wcodn-2015", + "layer_type": "ArcRest", + "url": "https://www.sciencebase.gov/arcgis/rest/services/Catalog/55db4088e4b0518e35470837/MapServer/export", + "shareable_url": true, + "arcgis_layers": "1", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "29F92251-AB85-4745-8C90-138C73D4391D", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "https://www.sciencebase.gov/catalog/file/get/55ce7dbbe4b01487cbfc7122", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={29F92251-AB85-4745-8C90-138C73D4391D}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 256 + ], + "themes": [ + 11 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 477, + "fields": { + "name": "DOD Offshore Wind Mission Compatibility Assessments (BOEM, 2014)", + "slug_name": "dod-offshore-wind-mission-compatibility-assessments-boem-2014", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/OceanEnergy/MapServer/export", + "shareable_url": true, + "arcgis_layers": "4", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1B763A3E-CBCF-465E-8D7E-2B44C0A712BB", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={1B763A3E-CBCF-465E-8D7E-2B44C0A712BB}", + "source": "http://www.marinecadastre.gov/data", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 460 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 478, + "fields": { + "name": "National Marine Sanctuaries (NOAA, 2015)", + "slug_name": "national-marine-sanctuaries-noaa-2015", + "layer_type": "ArcRest", + "url": "https://idpgis.ncep.noaa.gov/arcgis/rest/services/NOAA/MPA_Inventory_ONMS_only/MapServer/export", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://marineprotectedareas.noaa.gov/pdf/helpful-resources/inventory/mpa_inventory_2014_public_shp.zip", + "metadata": "http://marineprotectedareas.noaa.gov/pdf/helpful-resources/inventory/mpa_inventory_2014_metadata.pdf", + "source": "http://marineprotectedareas.noaa.gov/dataanalysis/mpainventory/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 249 + ], + "themes": [ + 10 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 479, + "fields": { + "name": "Wind Planning Areas (BOEM)", + "slug_name": "wind-planning-areas-boem", + "layer_type": "ArcRest", + "url": "https://gis.boem.gov/arcgis/rest/services/BOEM_BSEE/MMC_Layers/MapServer/export", + "shareable_url": true, + "arcgis_layers": "16", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "6A025415-E442-442E-89C8-87396711EBE7", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={6A025415-E442-442E-89C8-87396711EBE7}", + "source": "http://www.boem.gov/Offshore-Wind-Energy/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 460 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 480, + "fields": { + "name": "Permitted Marine Hydrokinetic Projects (NOAA/FERC 2016)", + "slug_name": "permitted-marine-hydrokinetic-projects-noaaferc-2016", + "layer_type": "ArcRest", + "url": "https://coast.noaa.gov/arcgis/rest/services/MarineCadastre/OceanEnergy/MapServer/export", + "shareable_url": true, + "arcgis_layers": "2", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "1C7FD454-ED2D-4C0D-A54D-390F462D4892", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "ftp://ftp.coast.noaa.gov/pub/MSP/PermittedMarineHydrokineticProjects.zip", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={1C7FD454-ED2D-4C0D-A54D-390F462D4892}", + "source": "http://marinecadastre.gov/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252, + 460 + ], + "themes": [ + 10, + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 481, + "fields": { + "name": "Marine Hydrokinetic Planning Areas (BOEM, 2016)", + "slug_name": "marine-hydrokinetic-planning-areas-boem-2016", + "layer_type": "ArcRest", + "url": "https://gis.boem.gov/arcgis/rest/services/BOEM_BSEE/MMC_Layers/MapServer/export", + "shareable_url": true, + "arcgis_layers": "28", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "D9894901-430E-4D5F-B157-07CF6406CFD8", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "http://portal.westcoastoceans.org/geoportal/rest/document?id={D9894901-430E-4D5F-B157-07CF6406CFD8}", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 460 + ], + "themes": [ + 12 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 482, + "fields": { + "name": "Washington", + "slug_name": "washington", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 487, + 488, + 489, + 490, + 491 + ], + "themes": [ + 13 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 483, + "fields": { + "name": "Oregon / Northern California", + "slug_name": "oregon-northern-california", + "layer_type": "checkbox", + "url": "", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "", + "is_sublayer": false, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 316, + 232, + 358, + 486 + ], + "themes": [ + 13 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 486, + "fields": { + "name": "OR Marine Reserves and MPAs (ODFW, 2012)", + "slug_name": "or-marine-reserves-and-mpas-odfw-2012", + "layer_type": "WMS", + "url": "http://www.coastalatlas.net/services/wms/getmap/?", + "shareable_url": true, + "arcgis_layers": "", + "wms_slug": "MPA_MR_Boundaries_ODFW_2012", + "is_sublayer": true, + "legend": "http://www.coastalatlas.net/services/wms/?version=1.3.0&service=WMS&request=GetLegendGraphic&sld_version=1.1.0&layer=MPA_MR_Boundaries_ODFW_2012&format=image/png&STYLE=default", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "http://oregonmarinereserves.com/rules/", + "metadata": "", + "source": "http://oregonmarinereserves.com/", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 483 + ], + "themes": [ + 13 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 487, + "fields": { + "name": "WA Northern Sea Otter Summer Concentrations (WDFW)", + "slug_name": "wa-northern-sea-otter-summer-concentrations-wdfw", + "layer_type": "ArcRest", + "url": "https://gis.dnr.wa.gov/site3/rest/services/Public_MSP/MSP_WDFW/MapServer/export", + "shareable_url": true, + "arcgis_layers": "43", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 254, + 482 + ], + "themes": [ + 9, + 13 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 488, + "fields": { + "name": "WA Commercial Groundfish Fishing Effort (WDFW, 2015)", + "slug_name": "wa-commercial-groundfish-fishing-effort-wdfw-2015", + "layer_type": "ArcRest", + "url": "https://gis.dnr.wa.gov/site3/rest/services/Public_MSP/MSP_WDFW/MapServer/export", + "shareable_url": true, + "arcgis_layers": "15", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 252, + 482 + ], + "themes": [ + 10, + 13 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 489, + "fields": { + "name": "WA Recreational Salmon Fishing Effort (WDFW, 2015)", + "slug_name": "wa-recreational-salmon-fishing-effort-wdfw-2015", + "layer_type": "ArcRest", + "url": "https://gis.dnr.wa.gov/site3/rest/services/Public_MSP/MSP_WDFW/MapServer/export", + "shareable_url": true, + "arcgis_layers": "21", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 482 + ], + "themes": [ + 13 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 490, + "fields": { + "name": "WA All Recreational Activities (Surfrider, 2015)", + "slug_name": "wa-all-recreational-activities-surfrider-2015", + "layer_type": "ArcRest", + "url": "https://gis.dnr.wa.gov/site3/rest/services/Public_MSP/MSP_Point97/MapServer/export", + "shareable_url": true, + "arcgis_layers": "0", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 482 + ], + "themes": [ + 13 + ], + "attribute_fields": [], + "lookup_table": [] + } +}, +{ + "model": "data_manager.layer", + "pk": 491, + "fields": { + "name": "WA Tanker Ship Transits (WAMSP, 2013-2014)", + "slug_name": "wa-tanker-ship-transits-wamsp-2013-2014", + "layer_type": "ArcRest", + "url": "https://gis.dnr.wa.gov/site3/rest/services/Public_MSP/MSP_Public_HumanUse/MapServer/export", + "shareable_url": true, + "arcgis_layers": "26", + "wms_slug": "", + "is_sublayer": true, + "legend": "", + "legend_title": "", + "legend_subtitle": "", + "utfurl": "", + "filterable": false, + "geoportal_id": "", + "description": "", + "data_overview": "", + "data_source": "", + "data_notes": "", + "bookmark": "", + "kml": "", + "data_download": "", + "metadata": "", + "source": "", + "map_tiles": "", + "compress_display": false, + "attribute_event": "click", + "lookup_field": "", + "vector_color": "", + "vector_fill": null, + "vector_graphic": "", + "opacity": 0.5, + "sublayers": [ + 482 + ], + "themes": [ + 13 + ], + "attribute_fields": [], + "lookup_table": [] + } +} +] diff --git a/data_manager/migrations/0027_auto_20190730_0022.py b/data_manager/migrations/0027_auto_20190730_0022.py new file mode 100644 index 0000000..65c1e1c --- /dev/null +++ b/data_manager/migrations/0027_auto_20190730_0022.py @@ -0,0 +1,118 @@ +# Generated by Django 2.2.3 on 2019-07-30 00:22 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0026_auto_20190725_2149'), + ] + + operations = [ + migrations.AddField( + model_name='layer', + name='filterable', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='layer', + name='geoportal_id', + field=models.CharField(blank=True, default=None, help_text='GeoPortal UUID', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='disabled_message', + field=models.CharField(blank=True, default=None, max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='espis_region', + field=models.CharField(blank=True, choices=[('Mid Atlantic', 'Mid Atlantic')], default=True, help_text='Region to search within', max_length=100, null=True), + ), + migrations.AlterField( + model_name='layer', + name='espis_search', + field=models.CharField(blank=True, default=True, help_text='keyphrase search for ESPIS Link', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='learn_more', + field=models.CharField(blank=True, default=None, help_text='link to view description in the Learn section', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='mouseover_field', + field=models.CharField(blank=True, default=True, help_text='feature level attribute used in mouseover display', max_length=75, null=True), + ), + migrations.AlterField( + model_name='layer', + name='point_radius', + field=models.IntegerField(blank=True, default=True, help_text='Used only for for Point layers (default is 2)', null=True), + ), + migrations.AlterField( + model_name='layer', + name='thumbnail', + field=models.URLField(blank=True, default=None, help_text='not sure we are using this any longer...', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='vector_color', + field=models.CharField(blank=True, default=True, max_length=7, null=True), + ), + migrations.AlterField( + model_name='layer', + name='vector_fill', + field=models.FloatField(blank=True, default=True, null=True), + ), + migrations.AlterField( + model_name='layer', + name='vector_graphic', + field=models.CharField(blank=True, default=True, max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='vector_outline_color', + field=models.CharField(blank=True, default=True, max_length=7, null=True), + ), + migrations.AlterField( + model_name='layer', + name='vector_outline_opacity', + field=models.FloatField(blank=True, default=True, null=True), + ), + migrations.AlterField( + model_name='layer', + name='wms_additional', + field=models.TextField(blank=True, default=None, help_text='additional WMS key-value pairs: &key=value...', null=True, verbose_name='WMS Additional Fields'), + ), + migrations.AlterField( + model_name='layer', + name='wms_format', + field=models.CharField(blank=True, default=None, help_text='most common: image/png. Only image types supported.', max_length=100, null=True, verbose_name='WMS Format'), + ), + migrations.AlterField( + model_name='layer', + name='wms_srs', + field=models.CharField(blank=True, default=None, help_text='If not EPSG:3857 WMS requests will be proxied', max_length=100, null=True, verbose_name='WMS SRS'), + ), + migrations.AlterField( + model_name='layer', + name='wms_styles', + field=models.CharField(blank=True, default=None, help_text='pre-determined styles, if exist', max_length=255, null=True, verbose_name='WMS Styles'), + ), + migrations.AlterField( + model_name='layer', + name='wms_time_item', + field=models.CharField(blank=True, default=None, help_text='Time Attribute Field, if different from "TIME". Proxy only.', max_length=255, null=True, verbose_name='WMS Time Field'), + ), + migrations.AlterField( + model_name='layer', + name='wms_timing', + field=models.CharField(blank=True, default=None, help_text='http://docs.geoserver.org/stable/en/user/services/wms/time.html#specifying-a-time', max_length=255, null=True, verbose_name='WMS Time'), + ), + migrations.AlterField( + model_name='layer', + name='wms_version', + field=models.CharField(blank=True, choices=[(None, ''), ('1.0.0', '1.0.0'), ('1.1.0', '1.1.0'), ('1.1.1', '1.1.1'), ('1.3.0', '1.3.0')], default=None, help_text='WMS Versioning - usually either 1.1.1 or 1.3.0', max_length=10, null=True), + ), + ] diff --git a/data_manager/models.py b/data_manager/models.py index ca6ec61..58a7df8 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -138,17 +138,19 @@ class Layer(models.Model, SiteFlags): layer_type = models.CharField(max_length=50, choices=TYPE_CHOICES, help_text='use placeholder to temporarily remove layer from TOC') url = models.CharField(max_length=255, blank=True, null=True) shareable_url = models.BooleanField(default=True, help_text='Indicates whether the data layer (e.g. map tiles) can be shared with others (through the Map Tiles Link)') + # RDH: proxy_url does not appear to be used. + # proxy_url = models.BooleanField(default=False, help_text="proxy layer url through marine planner") arcgis_layers = models.CharField(max_length=255, blank=True, null=True, help_text='comma separated list of arcgis layer IDs') disable_arcgis_attributes = models.BooleanField(default=False, help_text='Click to disable clickable ArcRest layers') wms_help = models.BooleanField(default=False, help_text='Enable simple selection for WMS fields. Only supports WMS 1.1.1') wms_slug = models.CharField(max_length=255, blank=True, null=True, verbose_name='WMS Layer Name') - wms_version = models.CharField(max_length=10, blank=True, null=True, choices=WMS_VERSION_CHOICES, help_text='WMS Versioning - usually either 1.1.1 or 1.3.0') - wms_format = models.CharField(max_length=100, blank=True, null=True, help_text='most common: image/png. Only image types supported.', verbose_name='WMS Format') - wms_srs = models.CharField(max_length=100, blank=True, null=True, help_text='If not EPSG:3857 WMS requests will be proxied', verbose_name='WMS SRS') - wms_styles = models.CharField(max_length=255, blank=True, null=True, help_text='pre-determined styles, if exist', verbose_name='WMS Styles') - wms_timing = models.CharField(max_length=255, blank=True, null=True, help_text='http://docs.geoserver.org/stable/en/user/services/wms/time.html#specifying-a-time', verbose_name='WMS Time') - wms_time_item = models.CharField(max_length=255, blank=True, null=True, help_text='Time Attribute Field, if different from "TIME". Proxy only.', verbose_name='WMS Time Field') - wms_additional = models.TextField(blank=True, null=True, help_text='additional WMS key-value pairs: &key=value...', verbose_name='WMS Additional Fields') + wms_version = models.CharField(max_length=10, blank=True, null=True, default=None, choices=WMS_VERSION_CHOICES, help_text='WMS Versioning - usually either 1.1.1 or 1.3.0') + wms_format = models.CharField(max_length=100, blank=True, null=True, default=None, help_text='most common: image/png. Only image types supported.', verbose_name='WMS Format') + wms_srs = models.CharField(max_length=100, blank=True, null=True, default=None, help_text='If not EPSG:3857 WMS requests will be proxied', verbose_name='WMS SRS') + wms_styles = models.CharField(max_length=255, blank=True, null=True, default=None, help_text='pre-determined styles, if exist', verbose_name='WMS Styles') + wms_timing = models.CharField(max_length=255, blank=True, null=True, default=None, help_text='http://docs.geoserver.org/stable/en/user/services/wms/time.html#specifying-a-time', verbose_name='WMS Time') + wms_time_item = models.CharField(max_length=255, blank=True, null=True, default=None, help_text='Time Attribute Field, if different from "TIME". Proxy only.', verbose_name='WMS Time Field') + wms_additional = models.TextField(blank=True, null=True, default=None, help_text='additional WMS key-value pairs: &key=value...', verbose_name='WMS Additional Fields') wms_info = models.BooleanField(default=False, help_text='enable Feature Info requests on click') wms_info_format = models.CharField(max_length=255, blank=True, null=True, default=None, help_text='Available supported feature info formats') is_sublayer = models.BooleanField(default=False) @@ -158,16 +160,28 @@ class Layer(models.Model, SiteFlags): has_companion = models.BooleanField(default=False, help_text='Check if this layer has a companion layer') connect_companion_layers_to = models.ManyToManyField('self', blank=True, help_text='Select which main layer(s) you would like to use in conjuction with this companion layer.') is_disabled = models.BooleanField(default=False, help_text='when disabled, the layer will still appear in the TOC, only disabled') - disabled_message = models.CharField(max_length=255, blank=True, null=True) + disabled_message = models.CharField(max_length=255, blank=True, null=True, default=None) legend = models.CharField(max_length=255, blank=True, null=True, help_text='URL or path to the legend image file') legend_title = models.CharField(max_length=255, blank=True, null=True, help_text='alternative to using the layer name') legend_subtitle = models.CharField(max_length=255, blank=True, null=True) utfurl = models.CharField(max_length=255, blank=True, null=True) + # RDH: utfjsonp does not appear to be used. + # utfjsonp = models.BooleanField(default=False) + # RDH: summarize_to_grid does not appear to be used. + # summarize_to_grid = models.BooleanField(default=False) + # RDH: filterable is used in planner.html and filters.html, regarding visibility + # TODO: need to identify how/why this is used and integrate into ocean_portal code base + # Filterable is used for 'beach cleanup' and 'derelict gear' layers. + filterable = models.BooleanField(default=False) + # RDH: geoportal_id is used in data_manager view 'geoportal_ids', which is never used + geoportal_id = models.CharField(max_length=255, blank=True, null=True, default=None, help_text="GeoPortal UUID") + # RDH: proj does not appear to be used. + # proj = models.CharField(max_length=255, blank=True, null=True, help_text="will be EPSG:3857, if unspecified") + #tooltip description = models.TextField(blank=True, null=True) - #data description (updated fact sheet) (now the Learn pages) data_overview = models.TextField(blank=True, null=True) data_source = models.CharField(max_length=255, blank=True, null=True) data_notes = models.TextField(blank=True, null=True) @@ -177,33 +191,34 @@ class Layer(models.Model, SiteFlags): bookmark = models.CharField(max_length=755, blank=True, null=True, help_text='link to view data layer in the planner') kml = models.CharField(max_length=255, blank=True, null=True, help_text='link to download the KML') data_download = models.CharField(max_length=255, blank=True, null=True, help_text='link to download the data') - learn_more = models.CharField(max_length=255, blank=True, null=True, help_text='link to view description in the Learn section') + learn_more = models.CharField(max_length=255, blank=True, null=True, default=None, help_text='link to view description in the Learn section') metadata = models.CharField(max_length=255, blank=True, null=True, help_text='link to view/download the metadata') source = models.CharField(max_length=255, blank=True, null=True, help_text='link back to the data source') map_tiles = models.CharField(max_length=255, blank=True, null=True, help_text='internal link to a page that details how others might consume the data') - thumbnail = models.URLField(max_length=255, blank=True, null=True, help_text='not sure we are using this any longer...') + thumbnail = models.URLField(max_length=255, blank=True, null=True, default=None, help_text='not sure we are using this any longer...') #geojson javascript attribution EVENT_CHOICES = ( ('click', 'click'), ('mouseover', 'mouseover') ) + # RDH: Adds a 'title' to the serialize_attributes dict - not sure if that's used. + # attribute_title = models.CharField(max_length=255, blank=True, null=True) attribute_fields = models.ManyToManyField('AttributeInfo', blank=True) compress_display = models.BooleanField(default=False) attribute_event = models.CharField(max_length=35, choices=EVENT_CHOICES, default='click') - mouseover_field = models.CharField(max_length=75, blank=True, null=True, help_text='feature level attribute used in mouseover display') + mouseover_field = models.CharField(max_length=75, blank=True, null=True, default=True, help_text='feature level attribute used in mouseover display') lookup_field = models.CharField(max_length=255, blank=True, null=True) lookup_table = models.ManyToManyField('LookupInfo', blank=True) is_annotated = models.BooleanField(default=False) - vector_outline_color = models.CharField(max_length=7, blank=True, null=True) - vector_outline_opacity = models.FloatField(blank=True, null=True) - vector_color = models.CharField(max_length=7, blank=True, null=True) - vector_fill = models.FloatField(blank=True, null=True) - vector_graphic = models.CharField(max_length=255, blank=True, null=True) - point_radius = models.IntegerField(blank=True, null=True, help_text='Used only for for Point layers (default is 2)') + vector_outline_color = models.CharField(max_length=7, blank=True, null=True, default=True) + vector_outline_opacity = models.FloatField(blank=True, null=True, default=True) + vector_color = models.CharField(max_length=7, blank=True, null=True, default=True) + vector_fill = models.FloatField(blank=True, null=True, default=True) + vector_graphic = models.CharField(max_length=255, blank=True, null=True, default=True) + point_radius = models.IntegerField(blank=True, null=True, default=True, help_text='Used only for for Point layers (default is 2)') opacity = models.FloatField(default=.5, blank=True, null=True) - # objects = models.Manager() objects = CurrentSiteManager('site') all_objects = models.Manager() @@ -212,8 +227,8 @@ class Layer(models.Model, SiteFlags): ('Mid Atlantic', 'Mid Atlantic'), ) espis_enabled = models.BooleanField(default=False) - espis_search = models.CharField(max_length=255, blank=True, null=True, help_text="keyphrase search for ESPIS Link") - espis_region = models.CharField(max_length=100, blank=True, null=True, choices=ESPIS_REGION_CHOICES, help_text="Region to search within") + espis_search = models.CharField(max_length=255, blank=True, null=True, default=True, help_text="keyphrase search for ESPIS Link") + espis_region = models.CharField(max_length=100, blank=True, null=True, default=True, choices=ESPIS_REGION_CHOICES, help_text="Region to search within") def __unicode__(self): return unicode('%s' % (self.name)) diff --git a/data_manager/views.py b/data_manager/views.py index 2ca9339..0784244 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -172,6 +172,7 @@ def wms_get_capabilities(url): 'image/png', 'application/json', 'text/javascript', #JSONP + 'application/vnd.ogc.gml', ] for format_type in getFeatureInfo.findall('Format'): if format_type.text in accepted_formats: @@ -205,13 +206,13 @@ def wms_get_capabilities(url): if wms[layer].timepositions: positions = wms[layer].timepositions - elif layer_obj.has_key('positions'): + elif 'positions' in layer_obj.keys(): positions = layer_obj['positions'] else: positions = None if wms[layer].defaulttimeposition: defaulttimeposition = wms[layer].defaulttimeposition - elif layer_obj.has_key('default'): + elif 'default' in layer_obj.keys(): defaulttimeposition = layer_obj['default'] else: defaulttimeposition = None From f48b3063f35a6ef01a25bedd28668a0cfb3b7a65 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Wed, 14 Aug 2019 15:40:08 -0700 Subject: [PATCH 015/127] caching on theme changes --- data_manager/models.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/data_manager/models.py b/data_manager/models.py index 58a7df8..338d6c4 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -87,10 +87,20 @@ def learn_link(self): return '%s/learn/%s' %(domain, self.name) def dictCache(self, site_id=None): + from django.core.cache import cache themes_dict = None if site_id in [x.id for x in self.site.all()]: - themes_dict = self.toDict - themes_dict['layers'] = [layer.id for layer in Layer.all_objects.filter(site__in=[site_id],is_sublayer=False,themes__in=[self.id]).exclude(layer_type='placeholder')] + if site_id: + themes_dict = cache.get('data_manager_theme_%d_%d' % (self.id, site_id)) + if not themes_dict: + themes_dict = self.toDict + themes_dict['layers'] = [layer.id for layer in Layer.all_objects.filter(site__in=[site_id],is_sublayer=False,themes__in=[self.id]).exclude(layer_type='placeholder')] + if site_id: + # Cache for 1 week, will be reset if layer data changes + cache.set('data_manager_theme_%d_%d' % (self.id, site_id), themes_dict, 60*60*24*7) + else: + for site in Site.objects.all(): + cache.set('data_manager_theme_%d_%d' % (self.id, site.id), themes_dict, 60*60*24*7) return themes_dict @@ -110,8 +120,11 @@ def toDict(self): return themes_dict def save(self, *args, **kwargs): - if 'recache' in kwargs.keys(): #crufty - impacted when MDAT v2 import is run. - kwargs.pop('recache', None) + from django.core.cache import cache + for site in Site.objects.all(): + cache.delete('data_manager_json_site_%s' % site.pk) + # 'data_manager_theme_%d_%d' % (self.id, site_id) + cache.delete('data_manager_theme_%d_%d' % (self.id, site.pk)) super(Theme, self).save(*args, **kwargs) class Layer(models.Model, SiteFlags): From f416d6f1c8c515f849f662ecfcad0438279ceefd Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Fri, 16 Aug 2019 14:36:03 -0700 Subject: [PATCH 016/127] fixing caching bug on creating new themes --- data_manager/models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data_manager/models.py b/data_manager/models.py index 338d6c4..1fce511 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -124,7 +124,8 @@ def save(self, *args, **kwargs): for site in Site.objects.all(): cache.delete('data_manager_json_site_%s' % site.pk) # 'data_manager_theme_%d_%d' % (self.id, site_id) - cache.delete('data_manager_theme_%d_%d' % (self.id, site.pk)) + if self.id: + cache.delete('data_manager_theme_%d_%d' % (self.id, site.pk)) super(Theme, self).save(*args, **kwargs) class Layer(models.Model, SiteFlags): From abdd7086d018ae58e123d67f0be5b8eac165c2cb Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Fri, 16 Aug 2019 14:58:22 -0700 Subject: [PATCH 017/127] fixing caching when saving layers --- data_manager/models.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/data_manager/models.py b/data_manager/models.py index 1fce511..4ef558e 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -687,6 +687,9 @@ def save(self, *args, **kwargs): for association in self.associated_layer.all(): cache.delete('data_manager_layer_%d_%d' % (association.parentLayer.pk, site.pk)) association.layer.dictCache(site.pk) + for theme in self.themes.all(): + cache.delete('data_manager_theme_%d_%d' % (theme.pk, site.pk)) + theme.dictCache(site.pk) class AttributeInfo(models.Model): From ec9d456a6e47dc4d470ca469af1956170edaa65b Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Fri, 16 Aug 2019 17:31:18 -0700 Subject: [PATCH 018/127] better management of wms helper admin form --- data_manager/models.py | 6 +++++ .../static/data_manager/js/layer_form.js | 27 +++++++++++++++++-- data_manager/views.py | 8 ++++++ 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/data_manager/models.py b/data_manager/models.py index 4ef558e..21f7cb8 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -664,6 +664,10 @@ def save(self, *args, **kwargs): self.url = '' if 'recache' in kwargs.keys(): kwargs.pop('recache', None) + # TODO: determine all themes, companions, ancestors, and decendants prior to saving + # clear all of their caches. + # How do we do this thoroughly? + # How do we avoid infinite loops? (companions)(recursion?) super(Layer, self).save(*args, **kwargs) for site in Site.objects.all(): cache.delete('data_manager_json_site_%s' % site.pk) @@ -687,6 +691,8 @@ def save(self, *args, **kwargs): for association in self.associated_layer.all(): cache.delete('data_manager_layer_%d_%d' % (association.parentLayer.pk, site.pk)) association.layer.dictCache(site.pk) + # TODO: if len(self.themes.all() == 0): delete all theme caches? + # On initial save, layers don't seem to know what themes they are associated with. :( for theme in self.themes.all(): cache.delete('data_manager_theme_%d_%d' % (theme.pk, site.pk)) theme.dictCache(site.pk) diff --git a/data_manager/static/data_manager/js/layer_form.js b/data_manager/static/data_manager/js/layer_form.js index 4d25f87..46a4313 100644 --- a/data_manager/static/data_manager/js/layer_form.js +++ b/data_manager/static/data_manager/js/layer_form.js @@ -67,7 +67,7 @@ show_layertype_form = function(layertype) { } $('#id_wms_srs').change(function() { - if ($('#id_wms_srs').val() == 'EPSG:3857') { + if ($('#id_wms_srs').val().toLowerCase() == 'epsg:3857') { $('#id_wms_time_item').prop('disabled', true); $('#id_wms_additional').prop('disabled', false); } else { @@ -153,7 +153,7 @@ show_layertype_form = function(layertype) { $('.form-row.field-wms_info.field-wms_info_format').hide(); } } - + check_queryable(data.queryable); }, error: function(data) { url = $('#id_url').val(); @@ -218,6 +218,29 @@ show_layertype_form = function(layertype) { } } +check_queryable = function(queryable_layers) { + var selected_layer = $('#id_wms_slug').val(); + if (queryable_layers.indexOf(selected_layer) >= 0) { + $('#id_wms_info').attr('disabled', false); + $('#id_wms_info_format').attr('disabled', false); + } else { + $('#id_wms_info').attr('checked', false); + $('#id_wms_info').attr('disabled', true); + $('#id_wms_info_format').attr('disabled', true); + } + if (!$('#queryable_layer_list').length > 0) { + if ($('.form-row.field-wms_info.field-wms_info_format').length > 0) { + $('.form-row.field-wms_info.field-wms_info_format').append('
'); + } else { + console.log('need to re-write identification of WMS Info section of form. See layer_form.js "check_queryable()"'); + } + } + if ($('#queryable_layer_list').length > 0) { + q_layers_html = "Queryable Layers: " + queryable_layers.join(', '); + $('#queryable_layer_list').html(q_layers_html); + } +} + $(document).ready(function() { show_layertype_form($('#id_layer_type option:selected').text()); diff --git a/data_manager/views.py b/data_manager/views.py index 0784244..60fb022 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -128,6 +128,7 @@ def wms_get_capabilities(url): layers[layer] = {'dimensions':{}} styles = {} srs_opts = {} + queryable = [] times = {} import xml.etree.ElementTree as ET root = ET.fromstring(wms.getServiceXML()) @@ -187,6 +188,12 @@ def wms_get_capabilities(url): for layer in layers.keys(): styles[layer] = wms[layer].styles srs_opts[layer] = wms[layer].crsOptions + try: + if bool(wms[layer].queryable): + queryable.append(layer) + except Exception as e: + print(e) + pass dimensions = layers[layer]['dimensions'] timefield = None @@ -237,6 +244,7 @@ def wms_get_capabilities(url): 'version': wms.version, 'styles': styles, 'srs': srs_opts, + 'queryable': queryable, 'time': times, 'capabilities': capabilities, } From b8416329c3c8f35adc45a34b922958f37ae16d14 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Thu, 29 Aug 2019 15:42:51 -0700 Subject: [PATCH 019/127] adding Vector Tile option for layers --- data_manager/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/data_manager/models.py b/data_manager/models.py index 21f7cb8..de9bf99 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -136,6 +136,7 @@ class Layer(models.Model, SiteFlags): ('radio', 'radio'), ('checkbox', 'checkbox'), ('Vector', 'Vector'), + ('VectorTile', 'VectorTile'), ('placeholder', 'placeholder'), ) WMS_VERSION_CHOICES = ( From 266d29603de8c87fce5e21cfd9c8009840bfe32b Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Fri, 25 Oct 2019 09:31:21 -0700 Subject: [PATCH 020/127] enabling new modules to override Admin --- data_manager/admin.py | 12 +++++++----- data_manager/settings.py | 2 ++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/data_manager/admin.py b/data_manager/admin.py index 115fb06..878f034 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -1,3 +1,4 @@ +from django.conf import settings from django.contrib import admin from django import forms from .models import * @@ -254,8 +255,9 @@ class LookupInfoAdmin(admin.ModelAdmin): class DataNeedAdmin(admin.ModelAdmin): list_display = ('name', 'description') -admin.site.register(Theme, ThemeAdmin) -admin.site.register(Layer, LayerAdmin) -admin.site.register(AttributeInfo, AttributeInfoAdmin) -admin.site.register(LookupInfo, LookupInfoAdmin) -admin.site.register(DataNeed, DataNeedAdmin) +if settings.DATA_MANAGER_ADMIN: + admin.site.register(Theme, ThemeAdmin) + admin.site.register(Layer, LayerAdmin) + admin.site.register(AttributeInfo, AttributeInfoAdmin) + admin.site.register(LookupInfo, LookupInfoAdmin) + admin.site.register(DataNeed, DataNeedAdmin) diff --git a/data_manager/settings.py b/data_manager/settings.py index 69bba47..5dd6c65 100644 --- a/data_manager/settings.py +++ b/data_manager/settings.py @@ -1,2 +1,4 @@ import os DATA_MANAGER_BASE_DIR = os.path.dirname(os.path.dirname(__file__)) + +DATA_MANAGER_ADMIN = True From ae5aa1bc80c3fe622e50c4adea4096042c30615e Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Fri, 25 Oct 2019 17:58:20 -0700 Subject: [PATCH 021/127] only providing link to view layer in catalog if catalog is enabled --- data_manager/models.py | 13 ++++++++----- data_manager/settings.py | 2 ++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/data_manager/models.py b/data_manager/models.py index de9bf99..37186b2 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -3,6 +3,7 @@ from django.db import models from django.template.defaultfilters import slugify from django.urls import reverse +from django.conf import settings #from sorl.thumbnail import ImageField # From MARCO/utils.py @@ -265,11 +266,13 @@ def parent(self): return self def get_absolute_url(self): - theme = self.themes.filter(visible=True).first() - if theme: - theme_url = reverse('portal.data_catalog.views.theme', args=[theme.name]) - if theme_url: - return "{0}#layer-info-{1}".format(theme_url, self.slug_name) + if settings.DATA_CATALOG_ENABLED: + theme = self.themes.filter(visible=True).first() + if theme: + theme_url = reverse('portal.data_catalog.views.theme', args=[theme.name]) + if theme_url: + return "{0}#layer-info-{1}".format(theme_url, self.slug_name) + return None @property def slug(self): diff --git a/data_manager/settings.py b/data_manager/settings.py index 5dd6c65..7c1d134 100644 --- a/data_manager/settings.py +++ b/data_manager/settings.py @@ -2,3 +2,5 @@ DATA_MANAGER_BASE_DIR = os.path.dirname(os.path.dirname(__file__)) DATA_MANAGER_ADMIN = True + +DATA_CATALOG_ENABLED = True From e0816ddb91038acefaa4763004987f9b56cec892 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Tue, 5 Nov 2019 16:06:34 -0800 Subject: [PATCH 022/127] fixing numerous default values for Layer fields --- .../migrations/0028_auto_20191106_0005.py | 63 +++++++++++++++++++ data_manager/models.py | 18 +++--- 2 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 data_manager/migrations/0028_auto_20191106_0005.py diff --git a/data_manager/migrations/0028_auto_20191106_0005.py b/data_manager/migrations/0028_auto_20191106_0005.py new file mode 100644 index 0000000..2c01190 --- /dev/null +++ b/data_manager/migrations/0028_auto_20191106_0005.py @@ -0,0 +1,63 @@ +# Generated by Django 2.2.3 on 2019-11-06 00:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0027_auto_20190730_0022'), + ] + + operations = [ + migrations.AlterField( + model_name='layer', + name='espis_region', + field=models.CharField(blank=True, choices=[('Mid Atlantic', 'Mid Atlantic')], default=None, help_text='Region to search within', max_length=100, null=True), + ), + migrations.AlterField( + model_name='layer', + name='espis_search', + field=models.CharField(blank=True, default=None, help_text='keyphrase search for ESPIS Link', max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='layer_type', + field=models.CharField(choices=[('XYZ', 'XYZ'), ('WMS', 'WMS'), ('ArcRest', 'ArcRest'), ('radio', 'radio'), ('checkbox', 'checkbox'), ('Vector', 'Vector'), ('VectorTile', 'VectorTile'), ('placeholder', 'placeholder')], help_text='use placeholder to temporarily remove layer from TOC', max_length=50), + ), + migrations.AlterField( + model_name='layer', + name='mouseover_field', + field=models.CharField(blank=True, default=None, help_text='feature level attribute used in mouseover display', max_length=75, null=True), + ), + migrations.AlterField( + model_name='layer', + name='point_radius', + field=models.IntegerField(blank=True, default=None, help_text='Used only for for Point layers (default is 2)', null=True), + ), + migrations.AlterField( + model_name='layer', + name='vector_color', + field=models.CharField(blank=True, default=None, max_length=7, null=True), + ), + migrations.AlterField( + model_name='layer', + name='vector_fill', + field=models.FloatField(blank=True, default=None, null=True), + ), + migrations.AlterField( + model_name='layer', + name='vector_graphic', + field=models.CharField(blank=True, default=None, max_length=255, null=True), + ), + migrations.AlterField( + model_name='layer', + name='vector_outline_color', + field=models.CharField(blank=True, default=None, max_length=7, null=True), + ), + migrations.AlterField( + model_name='layer', + name='vector_outline_opacity', + field=models.FloatField(blank=True, default=None, null=True), + ), + ] diff --git a/data_manager/models.py b/data_manager/models.py index 37186b2..600b1d6 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -223,16 +223,16 @@ class Layer(models.Model, SiteFlags): attribute_fields = models.ManyToManyField('AttributeInfo', blank=True) compress_display = models.BooleanField(default=False) attribute_event = models.CharField(max_length=35, choices=EVENT_CHOICES, default='click') - mouseover_field = models.CharField(max_length=75, blank=True, null=True, default=True, help_text='feature level attribute used in mouseover display') + mouseover_field = models.CharField(max_length=75, blank=True, null=True, default=None, help_text='feature level attribute used in mouseover display') lookup_field = models.CharField(max_length=255, blank=True, null=True) lookup_table = models.ManyToManyField('LookupInfo', blank=True) is_annotated = models.BooleanField(default=False) - vector_outline_color = models.CharField(max_length=7, blank=True, null=True, default=True) - vector_outline_opacity = models.FloatField(blank=True, null=True, default=True) - vector_color = models.CharField(max_length=7, blank=True, null=True, default=True) - vector_fill = models.FloatField(blank=True, null=True, default=True) - vector_graphic = models.CharField(max_length=255, blank=True, null=True, default=True) - point_radius = models.IntegerField(blank=True, null=True, default=True, help_text='Used only for for Point layers (default is 2)') + vector_outline_color = models.CharField(max_length=7, blank=True, null=True, default=None) + vector_outline_opacity = models.FloatField(blank=True, null=True, default=None) + vector_color = models.CharField(max_length=7, blank=True, null=True, default=None) + vector_fill = models.FloatField(blank=True, null=True, default=None) + vector_graphic = models.CharField(max_length=255, blank=True, null=True, default=None) + point_radius = models.IntegerField(blank=True, null=True, default=None, help_text='Used only for for Point layers (default is 2)') opacity = models.FloatField(default=.5, blank=True, null=True) objects = CurrentSiteManager('site') @@ -243,8 +243,8 @@ class Layer(models.Model, SiteFlags): ('Mid Atlantic', 'Mid Atlantic'), ) espis_enabled = models.BooleanField(default=False) - espis_search = models.CharField(max_length=255, blank=True, null=True, default=True, help_text="keyphrase search for ESPIS Link") - espis_region = models.CharField(max_length=100, blank=True, null=True, default=True, choices=ESPIS_REGION_CHOICES, help_text="Region to search within") + espis_search = models.CharField(max_length=255, blank=True, null=True, default=None, help_text="keyphrase search for ESPIS Link") + espis_region = models.CharField(max_length=100, blank=True, null=True, default=None, choices=ESPIS_REGION_CHOICES, help_text="Region to search within") def __unicode__(self): return unicode('%s' % (self.name)) From c02384bd7415e56054ffe41edb7b897e4ac4837a Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Wed, 6 Nov 2019 17:51:31 -0800 Subject: [PATCH 023/127] more tweaks while updating Layer documentation --- .../migrations/0029_auto_20191107_0132.py | 33 +++++++++++++++++++ data_manager/models.py | 13 ++++---- 2 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 data_manager/migrations/0029_auto_20191107_0132.py diff --git a/data_manager/migrations/0029_auto_20191107_0132.py b/data_manager/migrations/0029_auto_20191107_0132.py new file mode 100644 index 0000000..8186504 --- /dev/null +++ b/data_manager/migrations/0029_auto_20191107_0132.py @@ -0,0 +1,33 @@ +# Generated by Django 2.2.3 on 2019-11-07 01:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0028_auto_20191106_0005'), + ] + + operations = [ + migrations.AlterField( + model_name='layer', + name='opacity', + field=models.FloatField(blank=True, default=0.5, null=True, verbose_name='Initial Opacity'), + ), + migrations.AlterField( + model_name='layer', + name='vector_color', + field=models.CharField(blank=True, default=None, max_length=100, null=True), + ), + migrations.AlterField( + model_name='layer', + name='vector_outline_color', + field=models.CharField(blank=True, default=None, max_length=100, null=True, verbose_name='Vector Stroke Color'), + ), + migrations.AlterField( + model_name='layer', + name='vector_outline_opacity', + field=models.FloatField(blank=True, default=None, null=True, verbose_name='Vector Stroke Width'), + ), + ] diff --git a/data_manager/models.py b/data_manager/models.py index 600b1d6..6cec286 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -227,13 +227,14 @@ class Layer(models.Model, SiteFlags): lookup_field = models.CharField(max_length=255, blank=True, null=True) lookup_table = models.ManyToManyField('LookupInfo', blank=True) is_annotated = models.BooleanField(default=False) - vector_outline_color = models.CharField(max_length=7, blank=True, null=True, default=None) - vector_outline_opacity = models.FloatField(blank=True, null=True, default=None) - vector_color = models.CharField(max_length=7, blank=True, null=True, default=None) - vector_fill = models.FloatField(blank=True, null=True, default=None) - vector_graphic = models.CharField(max_length=255, blank=True, null=True, default=None) + vector_outline_color = models.CharField(max_length=100, blank=True, null=True, default=None, verbose_name="Vector Stroke Color") + # RDH 20191106 - I'm hijacking outline opacity (not a thing) for stroke width + vector_outline_opacity = models.FloatField(blank=True, null=True, default=None, verbose_name="Vector Stroke Width") + vector_color = models.CharField(max_length=100, blank=True, null=True, default=None, verbose_name="Vector Fill Color") + vector_fill = models.FloatField(blank=True, null=True, default=None, verbose_name="Vector Fill Opacity") + vector_graphic = models.CharField(max_length=255, blank=True, null=True, default=None, verbose_name="Vector Graphic") point_radius = models.IntegerField(blank=True, null=True, default=None, help_text='Used only for for Point layers (default is 2)') - opacity = models.FloatField(default=.5, blank=True, null=True) + opacity = models.FloatField(default=.5, blank=True, null=True, verbose_name="Initial Opacity") objects = CurrentSiteManager('site') all_objects = models.Manager() From 4d3e00e873bc4a1b4631a15292c5ea8feb24b3db Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Thu, 7 Nov 2019 11:27:39 -0800 Subject: [PATCH 024/127] update layer styles to support graphic scales --- .../migrations/0030_auto_20191107_1900.py | 43 +++++++++++++++++++ .../0031_lookupinfo_graphic_scale.py | 18 ++++++++ data_manager/models.py | 17 ++++++-- 3 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 data_manager/migrations/0030_auto_20191107_1900.py create mode 100644 data_manager/migrations/0031_lookupinfo_graphic_scale.py diff --git a/data_manager/migrations/0030_auto_20191107_1900.py b/data_manager/migrations/0030_auto_20191107_1900.py new file mode 100644 index 0000000..8b8fcb0 --- /dev/null +++ b/data_manager/migrations/0030_auto_20191107_1900.py @@ -0,0 +1,43 @@ +# Generated by Django 2.2.3 on 2019-11-07 19:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0029_auto_20191107_0132'), + ] + + operations = [ + migrations.AddField( + model_name='layer', + name='vector_graphic_scale', + field=models.FloatField(blank=True, default=True, help_text='Scale for the vector graphic from original size.', null=True, verbose_name='Vector Graphic Scale'), + ), + migrations.AddField( + model_name='layer', + name='vector_outline_width', + field=models.IntegerField(blank=True, default=None, null=True, verbose_name='Vector Stroke Width'), + ), + migrations.AlterField( + model_name='layer', + name='vector_color', + field=models.CharField(blank=True, default=None, max_length=100, null=True, verbose_name='Vector Fill Color'), + ), + migrations.AlterField( + model_name='layer', + name='vector_fill', + field=models.FloatField(blank=True, default=None, null=True, verbose_name='Vector Fill Opacity'), + ), + migrations.AlterField( + model_name='layer', + name='vector_graphic', + field=models.CharField(blank=True, default=None, help_text='address of image to use for point data', max_length=255, null=True, verbose_name='Vector Graphic'), + ), + migrations.AlterField( + model_name='layer', + name='vector_outline_opacity', + field=models.FloatField(blank=True, default=None, null=True, verbose_name='Vector Stroke Opacity'), + ), + ] diff --git a/data_manager/migrations/0031_lookupinfo_graphic_scale.py b/data_manager/migrations/0031_lookupinfo_graphic_scale.py new file mode 100644 index 0000000..4f24203 --- /dev/null +++ b/data_manager/migrations/0031_lookupinfo_graphic_scale.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.3 on 2019-11-07 19:10 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0030_auto_20191107_1900'), + ] + + operations = [ + migrations.AddField( + model_name='lookupinfo', + name='graphic_scale', + field=models.FloatField(blank=True, default=None, help_text='Scale the graphic from its original size.', null=True, verbose_name='Graphic Scale'), + ), + ] diff --git a/data_manager/models.py b/data_manager/models.py index 6cec286..422dbf4 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -228,11 +228,13 @@ class Layer(models.Model, SiteFlags): lookup_table = models.ManyToManyField('LookupInfo', blank=True) is_annotated = models.BooleanField(default=False) vector_outline_color = models.CharField(max_length=100, blank=True, null=True, default=None, verbose_name="Vector Stroke Color") - # RDH 20191106 - I'm hijacking outline opacity (not a thing) for stroke width - vector_outline_opacity = models.FloatField(blank=True, null=True, default=None, verbose_name="Vector Stroke Width") + # RDH 20191106 - This is not a thing. + vector_outline_opacity = models.FloatField(blank=True, null=True, default=None, verbose_name="Vector Stroke Opacity") + vector_outline_width = models.IntegerField(blank=True, null=True, default=None, verbose_name="Vector Stroke Width") vector_color = models.CharField(max_length=100, blank=True, null=True, default=None, verbose_name="Vector Fill Color") vector_fill = models.FloatField(blank=True, null=True, default=None, verbose_name="Vector Fill Opacity") - vector_graphic = models.CharField(max_length=255, blank=True, null=True, default=None, verbose_name="Vector Graphic") + vector_graphic = models.CharField(max_length=255, blank=True, null=True, default=None, verbose_name="Vector Graphic", help_text="address of image to use for point data") + vector_graphic_scale = models.FloatField(blank=True, null=True, default=True, verbose_name="Vector Graphic Scale", help_text="Scale for the vector graphic from original size.") point_radius = models.IntegerField(blank=True, null=True, default=None, help_text='Used only for for Point layers (default is 2)') opacity = models.FloatField(default=.5, blank=True, null=True, verbose_name="Initial Opacity") @@ -407,7 +409,7 @@ def serialize_attributes(self): @property def serialize_lookups(self): return {'field': self.lookup_field, - 'details': [{'value': lookup.value, 'color': lookup.color, 'dashstyle': lookup.dashstyle, 'fill': lookup.fill, 'graphic': lookup.graphic} for lookup in self.lookup_table.all()]} + 'details': [{'value': lookup.value, 'color': lookup.color, 'dashstyle': lookup.dashstyle, 'fill': lookup.fill, 'graphic': lookup.graphic, 'graphic_scale': lookup.graphic_scale} for lookup in self.lookup_table.all()]} def get_espis_link(self): if self.espis_enabled: @@ -526,10 +528,12 @@ def toDict(self, site_id=None): 'lookups': layer.serialize_lookups, 'outline_color': layer.vector_outline_color, 'outline_opacity': layer.vector_outline_opacity, + 'outline_width': layer.vector_outline_width, 'point_radius': layer.point_radius, 'color': layer.vector_color, 'fill_opacity': layer.vector_fill, 'graphic': layer.vector_graphic, + 'graphic_scale': layer.vector_graphic_scale, 'opacity': layer.opacity, 'annotated': layer.is_annotated, 'is_disabled': layer.is_disabled, @@ -581,10 +585,12 @@ def toDict(self, site_id=None): 'lookups': layer.serialize_lookups, 'outline_color': layer.vector_outline_color, 'outline_opacity': layer.vector_outline_opacity, + 'outline_width': layer.vector_outline_width, 'point_radius': layer.point_radius, 'color': layer.vector_color, 'fill_opacity': layer.vector_fill, 'graphic': layer.vector_graphic, + 'graphic_scale': layer.vector_graphic_scale, 'opacity': layer.opacity, 'annotated': layer.is_annotated, 'is_disabled': layer.is_disabled, @@ -638,10 +644,12 @@ def toDict(self, site_id=None): 'lookups': self.serialize_lookups, 'outline_color': self.vector_outline_color, 'outline_opacity': self.vector_outline_opacity, + 'outline_width': self.vector_outline_width, 'point_radius': self.point_radius, 'color': self.vector_color, 'fill_opacity': self.vector_fill, 'graphic': self.vector_graphic, + 'graphic_scale': self.vector_graphic_scale, 'opacity': self.opacity, 'annotated': self.is_annotated, 'is_disabled': self.is_disabled, @@ -729,6 +737,7 @@ class LookupInfo(models.Model): dashstyle = models.CharField(max_length=11, choices=DASH_CHOICES, default='solid') fill = models.BooleanField(default=False) graphic = models.CharField(max_length=255, blank=True, null=True) + graphic_scale = models.FloatField(null=True, blank=True, default=None, verbose_name="Graphic Scale", help_text="Scale the graphic from its original size.") def __unicode__(self): return unicode('%s' % (self.value)) From 7010d21d2126762823221a9c7a31dc8450654b6a Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Fri, 8 Nov 2019 15:30:41 -0800 Subject: [PATCH 025/127] fixing handling of missing DATA_MANAGER_ADMIN setting --- data_manager/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_manager/admin.py b/data_manager/admin.py index 878f034..39ca228 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -255,7 +255,7 @@ class LookupInfoAdmin(admin.ModelAdmin): class DataNeedAdmin(admin.ModelAdmin): list_display = ('name', 'description') -if settings.DATA_MANAGER_ADMIN: +if hasattr(settings, 'DATA_MANAGER_ADMIN'): admin.site.register(Theme, ThemeAdmin) admin.site.register(Layer, LayerAdmin) admin.site.register(AttributeInfo, AttributeInfoAdmin) From 3368d0d8d667a711963d1b511409100627582d6d Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Tue, 12 Nov 2019 18:27:21 -0800 Subject: [PATCH 026/127] updating Lookup Info to set explicit stroke color and width --- data_manager/admin.py | 2 +- .../migrations/0032_auto_20191113_0013.py | 28 +++++++++++++++++++ data_manager/models.py | 6 ++-- 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 data_manager/migrations/0032_auto_20191113_0013.py diff --git a/data_manager/admin.py b/data_manager/admin.py index 39ca228..9d38f77 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -250,7 +250,7 @@ class AttributeInfoAdmin(admin.ModelAdmin): list_display = ('field_name', 'display_name', 'precision', 'order') class LookupInfoAdmin(admin.ModelAdmin): - list_display = ('value', 'color', 'dashstyle', 'fill', 'graphic') + list_display = ('value', 'color', 'stroke_color', 'dashstyle', 'fill', 'graphic') class DataNeedAdmin(admin.ModelAdmin): list_display = ('name', 'description') diff --git a/data_manager/migrations/0032_auto_20191113_0013.py b/data_manager/migrations/0032_auto_20191113_0013.py new file mode 100644 index 0000000..9c697b9 --- /dev/null +++ b/data_manager/migrations/0032_auto_20191113_0013.py @@ -0,0 +1,28 @@ +# Generated by Django 2.2.7 on 2019-11-13 00:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0031_lookupinfo_graphic_scale'), + ] + + operations = [ + migrations.AddField( + model_name='lookupinfo', + name='stroke_color', + field=models.CharField(blank=True, max_length=50, null=True, verbose_name='Stroke Color'), + ), + migrations.AddField( + model_name='lookupinfo', + name='stroke_width', + field=models.IntegerField(blank=True, default=None, null=True, verbose_name='Stroke Width'), + ), + migrations.AlterField( + model_name='lookupinfo', + name='color', + field=models.CharField(blank=True, max_length=50, null=True, verbose_name='Fill Color'), + ), + ] diff --git a/data_manager/models.py b/data_manager/models.py index 422dbf4..642e3a7 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -409,7 +409,7 @@ def serialize_attributes(self): @property def serialize_lookups(self): return {'field': self.lookup_field, - 'details': [{'value': lookup.value, 'color': lookup.color, 'dashstyle': lookup.dashstyle, 'fill': lookup.fill, 'graphic': lookup.graphic, 'graphic_scale': lookup.graphic_scale} for lookup in self.lookup_table.all()]} + 'details': [{'value': lookup.value, 'color': lookup.color, 'stroke_color': lookup.stroke_color, 'stroke_width': lookup.stroke_width, 'dashstyle': lookup.dashstyle, 'fill': lookup.fill, 'graphic': lookup.graphic, 'graphic_scale': lookup.graphic_scale} for lookup in self.lookup_table.all()]} def get_espis_link(self): if self.espis_enabled: @@ -733,7 +733,9 @@ class LookupInfo(models.Model): ('solid', 'solid') ) value = models.CharField(max_length=255, blank=True, null=True) - color = models.CharField(max_length=7, blank=True, null=True) + color = models.CharField(max_length=50, blank=True, null=True, verbose_name="Fill Color") + stroke_color = models.CharField(max_length=50, blank=True, null=True, verbose_name="Stroke Color") + stroke_width = models.IntegerField(null=True, blank=True, default=None, verbose_name="Stroke Width") dashstyle = models.CharField(max_length=11, choices=DASH_CHOICES, default='solid') fill = models.BooleanField(default=False) graphic = models.CharField(max_length=255, blank=True, null=True) From d3c3067d50e536c228b45c8a78d96b484a5fa493 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Mon, 12 Aug 2019 18:31:33 -0700 Subject: [PATCH 027/127] enabling turning layer legends on and off at admin --- data_manager/admin.py | 1 + data_manager/models.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/data_manager/admin.py b/data_manager/admin.py index 9d38f77..4e7e02a 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -118,6 +118,7 @@ class LayerAdmin(ImportExportMixin, nested_admin.NestedModelAdmin): ('LEGEND', { 'classes': ('collapse',), 'fields': ( + 'show_legend', 'legend', ('legend_title','legend_subtitle') ) diff --git a/data_manager/models.py b/data_manager/models.py index 642e3a7..f254904 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -180,6 +180,7 @@ class Layer(models.Model, SiteFlags): legend = models.CharField(max_length=255, blank=True, null=True, help_text='URL or path to the legend image file') legend_title = models.CharField(max_length=255, blank=True, null=True, help_text='alternative to using the layer name') legend_subtitle = models.CharField(max_length=255, blank=True, null=True) + show_legend = models.BooleanField(default=True, help_text='show the legend for this layer if available') utfurl = models.CharField(max_length=255, blank=True, null=True) # RDH: utfjsonp does not appear to be used. @@ -514,6 +515,7 @@ def toDict(self, site_id=None): 'legend': layer.legend, 'legend_title': layer.legend_title, 'legend_subtitle': layer.legend_subtitle, + 'show_legend': layer.show_legend, 'description': layer.tooltip, 'overview': layer.data_overview_text, 'data_source': layer.data_source, @@ -571,6 +573,7 @@ def toDict(self, site_id=None): 'legend': layer.legend, 'legend_title': layer.legend_title, 'legend_subtitle': layer.legend_subtitle, + 'show_legend': layer.show_legend, 'description': layer.tooltip, 'overview': layer.data_overview_text, 'data_source': layer.data_source, @@ -630,6 +633,7 @@ def toDict(self, site_id=None): 'legend': self.legend, 'legend_title': self.legend_title, 'legend_subtitle': self.legend_subtitle, + 'show_legend': self.show_legend, 'description': self.description, 'overview': self.data_overview, 'data_source': self.data_source, From a6b31746c238296d53d11370e3ddfdf078af0e80 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Mon, 18 Nov 2019 10:24:20 -0800 Subject: [PATCH 028/127] migrating in 'show legend' option for layers --- .../migrations/0033_layer_show_legend.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 data_manager/migrations/0033_layer_show_legend.py diff --git a/data_manager/migrations/0033_layer_show_legend.py b/data_manager/migrations/0033_layer_show_legend.py new file mode 100644 index 0000000..7a3d74f --- /dev/null +++ b/data_manager/migrations/0033_layer_show_legend.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.7 on 2019-11-18 18:22 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0032_auto_20191113_0013'), + ] + + operations = [ + migrations.AddField( + model_name='layer', + name='show_legend', + field=models.BooleanField(default=True, help_text='show the legend for this layer if available'), + ), + ] From 45822911f28ccfea0b6f48f506c8b350b4566bdf Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Mon, 19 Aug 2019 18:02:07 -0700 Subject: [PATCH 029/127] data_catalog html caching for layers --- data_manager/models.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/data_manager/models.py b/data_manager/models.py index f254904..51b9f28 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -466,6 +466,20 @@ def dimensions(self): for x in self.multilayerdimension_set.all() ], key=lambda x: x['order']) + @property + def catalog_html(self): + from django.template.loader import render_to_string + try: + return render_to_string( + "data_catalog/includes/layer_catalog_info.html", + { + 'layer': self, + 'sub_layers': self.sublayers.exclude(layer_type="placeholder") + } + ) + except Exception as e: + print(e) + @property def associatedMultilayers(self): if len(self.multilayerdimension_set.all()) > 0: @@ -662,7 +676,8 @@ def toDict(self, site_id=None): 'is_multilayer': self.isMultilayer, 'is_multilayer_parent': self.isMultilayerParent, 'dimensions': self.dimensions, - 'associated_multilayers': self.associatedMultilayers + 'associated_multilayers': self.associatedMultilayers, + 'catalog_html': self.catalog_html, } return layers_dict From 3dc5602186dddec7dea7f845e17139d68f5d3712 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Tue, 1 Oct 2019 18:26:23 -0700 Subject: [PATCH 030/127] early API additions for cacheless asynchronous picker --- data_manager/models.py | 10 ++++++++++ data_manager/urls.py | 3 +++ data_manager/views.py | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/data_manager/models.py b/data_manager/models.py index 51b9f28..e346a0f 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -120,6 +120,16 @@ def toDict(self): return themes_dict + def getInitDict(self): + theme_dict = { + 'id': self.id, + 'name': self.name, + 'display_name': self.display_name, + 'is_visible': self.visible, + } + + return theme_dict + def save(self, *args, **kwargs): from django.core.cache import cache for site in Site.objects.all(): diff --git a/data_manager/urls.py b/data_manager/urls.py index d6b96a4..c5535f4 100644 --- a/data_manager/urls.py +++ b/data_manager/urls.py @@ -13,5 +13,8 @@ re_path(r'^layer/([A-Za-z0-9_-]+)$', views.update_layer), re_path(r'^layer$', views.create_layer), re_path(r'^get_json$', views.get_json), + re_path(r'^get_themes$', views.get_themes), + re_path(r'^get_layer_search_data$', views.get_layer_search_data), + re_path(r'^get_layers_for_theme/(?P\d+)$', views.get_layers_for_theme), re_path(r'^wms_capabilities', views.wms_request_capabilities), ] diff --git a/data_manager/views.py b/data_manager/views.py index 60fb022..fb35cde 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -16,6 +16,28 @@ class LayerViewSet(viewsets.ReadOnlyModelViewSet): queryset = Layer.objects.all() serializer_class = BriefLayerSerializer +def get_themes(request): + data = { + "themes": [theme.getInitDict() for theme in Theme.objects.all().order_by('order')], + } + return JsonResponse(data) + +def get_layer_search_data(request): + search_dict = {} + for theme in Theme.objects.filter(visible=True): + for layer in theme.layer_set.all(): + search_dict[layer.name] = { + 'layer': layer.id, + 'theme': theme.id + } + if not layer.is_sublayer: + for sublayer in layer.sublayers.all(): + search_dict[layer.name] = { + 'layer': sublayer.id, + 'theme': theme.id + } + return JsonResponse(search_dict) + def get_json(request): from django.core.cache import cache from django.contrib.sites import shortcuts @@ -35,6 +57,16 @@ def get_json(request): cache.set('data_manager_json_site_%d' % current_site_pk, data, 60*60*24*7) return JsonResponse(data) +def get_layers_for_theme(request, themeID): + theme = Theme.objects.get(pk=themeID) + layer_list = [] + for layer in theme.layer_set.all().order_by('order'): + layer_list.append({ + 'id': layer.id, + 'name': layer.name, + 'has_sublayers': len(layer.sublayers.all()) > 0, + }) + return JsonResponse({'layers': layer_list}) def create_layer(request): if request.POST: From 63eb5cccc4700f2f7c01058f82038784a1af04a2 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Thu, 3 Oct 2019 18:16:09 -0700 Subject: [PATCH 031/127] supporting get_layer_details and properly querying sublayers --- data_manager/models.py | 2 +- data_manager/urls.py | 1 + data_manager/views.py | 7 ++++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/data_manager/models.py b/data_manager/models.py index e346a0f..8b2e625 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -571,7 +571,7 @@ def toDict(self, site_id=None): 'dimensions': layer.dimensions, 'associated_multilayers': layer.associatedMultilayers } - for layer in self.sublayers.all() + for layer in self.sublayers.filter(is_sublayer=True) ] connect_companion_layers_to = [ { diff --git a/data_manager/urls.py b/data_manager/urls.py index c5535f4..80cb577 100644 --- a/data_manager/urls.py +++ b/data_manager/urls.py @@ -16,5 +16,6 @@ re_path(r'^get_themes$', views.get_themes), re_path(r'^get_layer_search_data$', views.get_layer_search_data), re_path(r'^get_layers_for_theme/(?P\d+)$', views.get_layers_for_theme), + re_path(r'^get_layer_details/(?P\d+)$', views.get_layer_details), re_path(r'^wms_capabilities', views.wms_request_capabilities), ] diff --git a/data_manager/views.py b/data_manager/views.py index fb35cde..f327ef5 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -60,14 +60,19 @@ def get_json(request): def get_layers_for_theme(request, themeID): theme = Theme.objects.get(pk=themeID) layer_list = [] - for layer in theme.layer_set.all().order_by('order'): + for layer in theme.layer_set.filter(is_sublayer=False).order_by('order'): layer_list.append({ 'id': layer.id, 'name': layer.name, 'has_sublayers': len(layer.sublayers.all()) > 0, + 'subLayers': [{'id': x.id, 'name': x.name} for x in layer.sublayers.order_by('order')], }) return JsonResponse({'layers': layer_list}) +def get_layer_details(request, layerID): + layer = Layer.objects.get(pk=layerID) + return JsonResponse(layer.toDict) + def create_layer(request): if request.POST: try: From 4831d2ce65198899687f2e737eaa7ab786947459 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Fri, 4 Oct 2019 18:00:41 -0700 Subject: [PATCH 032/127] slight tweaks to support cacheless loading of Dynamic Layers and search layers --- data_manager/models.py | 9 +++++++++ data_manager/views.py | 22 +++++++++++++--------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/data_manager/models.py b/data_manager/models.py index 8b2e625..05b020a 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -515,6 +515,14 @@ def dictCache(self, site_id=None): @property def toDict(self, site_id=None): + parent = self.parent + if parent == self: + parent = None + elif not parent == None: + try: + parent = parent.toDict + except Exception as e: + parent = None sublayers = [ { 'id': layer.id, @@ -688,6 +696,7 @@ def toDict(self, site_id=None): 'dimensions': self.dimensions, 'associated_multilayers': self.associatedMultilayers, 'catalog_html': self.catalog_html, + 'parent': parent } return layers_dict diff --git a/data_manager/views.py b/data_manager/views.py index f327ef5..c674096 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -26,16 +26,20 @@ def get_layer_search_data(request): search_dict = {} for theme in Theme.objects.filter(visible=True): for layer in theme.layer_set.all(): - search_dict[layer.name] = { - 'layer': layer.id, - 'theme': theme.id - } if not layer.is_sublayer: - for sublayer in layer.sublayers.all(): - search_dict[layer.name] = { - 'layer': sublayer.id, - 'theme': theme.id + search_dict[layer.name] = { + 'layer': { + 'id': layer.id, + 'name': layer.name, + 'has_sublayers': layer.sublayers.all().count() > 0, + 'sublayers': [{'name': x.name, 'id': x.id} for x in layer.sublayers.filter(is_sublayer=True).order_by('order')] + }, + 'theme': { + 'id': theme.id, + 'name': theme.display_name, + 'description': theme.description } + } return JsonResponse(search_dict) def get_json(request): @@ -65,7 +69,7 @@ def get_layers_for_theme(request, themeID): 'id': layer.id, 'name': layer.name, 'has_sublayers': len(layer.sublayers.all()) > 0, - 'subLayers': [{'id': x.id, 'name': x.name} for x in layer.sublayers.order_by('order')], + 'subLayers': [{'id': x.id, 'name': x.name, 'slug_name': x.slug_name} for x in layer.sublayers.order_by('order')], }) return JsonResponse({'layers': layer_list}) From 2e55ad17506717062f8137ff200e599e17702829 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Wed, 16 Oct 2019 17:54:44 -0700 Subject: [PATCH 033/127] cacheless data_catalog initial commit --- data_manager/models.py | 76 ++++++++++++++++++++++++++++++++++++++++-- data_manager/urls.py | 1 + data_manager/views.py | 4 +++ 3 files changed, 79 insertions(+), 2 deletions(-) diff --git a/data_manager/models.py b/data_manager/models.py index 05b020a..3cae9e4 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -481,10 +481,10 @@ def catalog_html(self): from django.template.loader import render_to_string try: return render_to_string( - "data_catalog/includes/layer_catalog_info.html", + "data_catalog/includes/cacheless_layer_info.html", { 'layer': self, - 'sub_layers': self.sublayers.exclude(layer_type="placeholder") + # 'sub_layers': self.sublayers.exclude(layer_type="placeholder") } ) except Exception as e: @@ -526,6 +526,7 @@ def toDict(self, site_id=None): sublayers = [ { 'id': layer.id, + 'is_sublayer': layer.is_sublayer, 'name': layer.name, 'order': layer.order, 'type': layer.layer_type, @@ -701,6 +702,77 @@ def toDict(self, site_id=None): return layers_dict + def catalogDict(self, site_id=None): + parent = self.parent + if parent == self: + parent = None + elif not parent == None: + try: + parent = { + 'id':parent.id, + 'name': parent.name, + } + except Exception as e: + parent = None + + sublayers = [sublayer.catalogDict(site_id) for sublayer in self.sublayers.filter(is_sublayer=True).order_by('order')] + # companions = [companion.catalogDict(site_id) for companion in self.connect_companion_layers_to.all().order_by('order')] + layers_dict = { + 'id': self.id, + 'name': self.name, + 'slug_name': self.slug_name, + 'bookmark_link': self.bookmark_link, + 'is_sublayer': self.is_sublayer, + 'parent': parent, + 'kml': self.kml, + 'data_download_link': self.data_download_link, + 'metadata_link': self.metadata_link, + 'source': self.source_link, + 'tiles_link': self.tiles_link, + 'description': self.description, + 'data_overview': self.data_overview, + 'espis_enabled': self.espis_enabled, + 'espis_search': self.espis_search, + 'espis_region': self.espis_region, + 'get_espis_link': self.get_espis_link, + 'sublayers': sublayers, + # 'companions': companions + } + + return layers_dict + + def shortDict(self, site_id=None): + sublayers = [{ + 'id':sublayer.id, + 'parent': {'name':self.name}, + 'name':sublayer.name, + 'slug_name': sublayer.slug_name, + 'bookmark_link': sublayer.bookmark_link, + 'is_sublayer': True, + 'sublayers': [], + } for sublayer in self.sublayers.filter(is_sublayer=True).order_by('name')] + # sublayers = [sublayer.shortDict(site_id) for sublayer in self.sublayers.filter(is_sublayer=True).order_by('order')] + # companions = [{ + # 'id':companion.id, + # 'parent': {'name':self.name}, + # 'name':companion.name, + # 'slug_name': companion.slug_name, + # 'bookmark_link': companion.bookmark_link, + # 'is_sublayer': companion.is_sublayer, + # 'sublayers': [], + # } for companion in self.connect_companion_layers_to.all().order_by('name')] + layers_dict = { + 'id': self.id, + 'parent': None, + 'name': self.name, + 'slug_name': self.slug_name, + 'bookmark_link': self.bookmark_link, + 'is_sublayer': self.is_sublayer, + 'sublayers': sublayers, + # 'companions': companions, + } + return layers_dict + def save(self, *args, **kwargs): from django.core.cache import cache if 'slug_name' in kwargs.keys(): diff --git a/data_manager/urls.py b/data_manager/urls.py index 80cb577..54402ae 100644 --- a/data_manager/urls.py +++ b/data_manager/urls.py @@ -18,4 +18,5 @@ re_path(r'^get_layers_for_theme/(?P\d+)$', views.get_layers_for_theme), re_path(r'^get_layer_details/(?P\d+)$', views.get_layer_details), re_path(r'^wms_capabilities', views.wms_request_capabilities), + re_path(r'^get_layer_catalog_content/(?P\d+)/$', views.get_layer_catalog_content), ] diff --git a/data_manager/views.py b/data_manager/views.py index c674096..0a62675 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -77,6 +77,10 @@ def get_layer_details(request, layerID): layer = Layer.objects.get(pk=layerID) return JsonResponse(layer.toDict) +def get_layer_catalog_content(request, layerID): + layer = Layer.objects.get(pk=layerID) + return JsonResponse({'html': layer.catalog_html}) + def create_layer(request): if request.POST: try: From 4e2926d42247fd7d3b6705ab641a24495c759b8a Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Tue, 26 Nov 2019 09:07:40 -0800 Subject: [PATCH 034/127] making new calls site-agnostic, better handling placeholder layers --- data_manager/views.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/data_manager/views.py b/data_manager/views.py index 0a62675..b97203d 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -13,18 +13,18 @@ class LayerViewSet(viewsets.ReadOnlyModelViewSet): """ A simple ViewSet for layers. """ - queryset = Layer.objects.all() + queryset = Layer.all_objects.all() serializer_class = BriefLayerSerializer def get_themes(request): data = { - "themes": [theme.getInitDict() for theme in Theme.objects.all().order_by('order')], + "themes": [theme.getInitDict() for theme in Theme.all_objects.all().order_by('order')], } return JsonResponse(data) def get_layer_search_data(request): search_dict = {} - for theme in Theme.objects.filter(visible=True): + for theme in Theme.all_objects.filter(visible=True): for layer in theme.layer_set.all(): if not layer.is_sublayer: search_dict[layer.name] = { @@ -53,8 +53,8 @@ def get_json(request): if not data: data = { "state": { "activeLayers": [] }, - "layers": [layer.dictCache(current_site_pk) for layer in Layer.objects.filter(is_sublayer=False).exclude(layer_type='placeholder').order_by('order')], - "themes": [theme.dictCache(current_site_pk) for theme in Theme.objects.all().order_by('order')], + "layers": [layer.dictCache(current_site_pk) for layer in Layer.all_objects.filter(is_sublayer=False).exclude(layer_type='placeholder').order_by('order')], + "themes": [theme.dictCache(current_site_pk) for theme in Theme.all_objects.all().order_by('order')], "success": True } # Cache for 1 week, will be reset if layer data changes @@ -62,9 +62,9 @@ def get_json(request): return JsonResponse(data) def get_layers_for_theme(request, themeID): - theme = Theme.objects.get(pk=themeID) + theme = Theme.all_objects.get(pk=themeID) layer_list = [] - for layer in theme.layer_set.filter(is_sublayer=False).order_by('order'): + for layer in theme.layer_set.filter(is_sublayer=False).exclude(layer_type='placeholder').order_by('order'): layer_list.append({ 'id': layer.id, 'name': layer.name, @@ -74,11 +74,11 @@ def get_layers_for_theme(request, themeID): return JsonResponse({'layers': layer_list}) def get_layer_details(request, layerID): - layer = Layer.objects.get(pk=layerID) + layer = Layer.all_objects.get(pk=layerID) return JsonResponse(layer.toDict) def get_layer_catalog_content(request, layerID): - layer = Layer.objects.get(pk=layerID) + layer = Layer.all_objects.get(pk=layerID) return JsonResponse({'html': layer.catalog_html}) def create_layer(request): @@ -93,7 +93,7 @@ def create_layer(request): layer.save() for theme_id in themes: - theme = Theme.objects.get(id=theme_id) + theme = Theme.all_objects.get(id=theme_id) layer.themes.add(theme) layer.save() @@ -117,7 +117,7 @@ def update_layer(request, layer_id): for theme in layer.themes.all(): layer.themes.remove(theme) for theme_id in themes: - theme = Theme.objects.get(id=theme_id) + theme = Theme.all_objects.get(id=theme_id) layer.themes.add(theme) layer.save() From 66f5ff702e8cd8844ed2b29cea4e55b71191a31c Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Tue, 26 Nov 2019 10:19:34 -0800 Subject: [PATCH 035/127] update to fix checkbox bug --- data_manager/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/data_manager/views.py b/data_manager/views.py index b97203d..0cbd003 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -68,6 +68,7 @@ def get_layers_for_theme(request, themeID): layer_list.append({ 'id': layer.id, 'name': layer.name, + 'type': layer.layer_type, 'has_sublayers': len(layer.sublayers.all()) > 0, 'subLayers': [{'id': x.id, 'name': x.name, 'slug_name': x.slug_name} for x in layer.sublayers.order_by('order')], }) From 134daac962b11ed171aa6c19f882bb655a44f8b0 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Tue, 16 Jun 2020 18:07:13 -0700 Subject: [PATCH 036/127] support py3 urlencode --- data_manager/models.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/data_manager/models.py b/data_manager/models.py index 3cae9e4..ef48018 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -430,7 +430,12 @@ def get_espis_link(self): if self.espis_region: search_dict['geo'] = self.espis_region if len(search_dict) > 0: - from urllib import urlencode + try: + # python 3 + from urllib.parse import urlencode + except (ModuleNotFoundError, ImportError) as e: + #python 2 + from urllib import urlencode return 'https://marinecadastre.gov/espis/#/search/%s' % urlencode(search_dict) return None From 9e8e9e5bee92a39a214c3222be5a1946003adeb0 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Wed, 9 Sep 2020 17:40:05 -0700 Subject: [PATCH 037/127] enabling queries to elasticsearch --- data_manager/admin.py | 4 +- .../migrations/0034_layer_catalog_id.py | 18 +++++++++ data_manager/models.py | 1 + data_manager/settings.py | 10 +++++ .../static/data_manager/js/layer_form.js | 23 +++++++++++ data_manager/templates/admin/LayerForm.html | 6 +++ data_manager/urls.py | 1 + data_manager/views.py | 38 +++++++++++++++++++ 8 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 data_manager/migrations/0034_layer_catalog_id.py diff --git a/data_manager/admin.py b/data_manager/admin.py index 4e7e02a..2bedd6c 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -96,6 +96,7 @@ class LayerAdmin(ImportExportMixin, nested_admin.NestedModelAdmin): fieldsets = ( ('BASIC INFO', { 'fields': ( + 'catalog_id', ('name','layer_type'), 'url', 'site' @@ -106,7 +107,8 @@ class LayerAdmin(ImportExportMixin, nested_admin.NestedModelAdmin): ('order','themes'), ('is_sublayer','sublayers'), ('has_companion','connect_companion_layers_to'), - ('is_disabled','disabled_message') + # RDH 2019-10-25: We don't use this, and it doesn't seem helpful + # ('is_disabled','disabled_message') ) }), ('METADATA', { diff --git a/data_manager/migrations/0034_layer_catalog_id.py b/data_manager/migrations/0034_layer_catalog_id.py new file mode 100644 index 0000000..5ff6f68 --- /dev/null +++ b/data_manager/migrations/0034_layer_catalog_id.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.9 on 2020-09-09 18:34 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0033_layer_show_legend'), + ] + + operations = [ + migrations.AddField( + model_name='layer', + name='catalog_id', + field=models.TextField(blank=True, help_text='unique ID of associated record in catalog', null=True), + ), + ] diff --git a/data_manager/models.py b/data_manager/models.py index ef48018..62bbaa5 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -215,6 +215,7 @@ class Layer(models.Model, SiteFlags): data_publish_date = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True, default=None, verbose_name='Date published', help_text='YYYY-MM-DD') #data catalog links + catalog_id = models.TextField(null=True, blank=True, help_text="unique ID of associated record in catalog", verbose_name='Catalog Record') bookmark = models.CharField(max_length=755, blank=True, null=True, help_text='link to view data layer in the planner') kml = models.CharField(max_length=255, blank=True, null=True, help_text='link to download the KML') data_download = models.CharField(max_length=255, blank=True, null=True, help_text='link to download the data') diff --git a/data_manager/settings.py b/data_manager/settings.py index 7c1d134..d04ea8d 100644 --- a/data_manager/settings.py +++ b/data_manager/settings.py @@ -4,3 +4,13 @@ DATA_MANAGER_ADMIN = True DATA_CATALOG_ENABLED = True + +CATALOG_TECHNOLOGY = 'Madrona' + +CATALOG_SOURCE = None + +ELASTICSEARCH_INDEX = 'metadata' + +ELASTICSEARCH_SEARCH_FIELDS = [ + 'title', +] diff --git a/data_manager/static/data_manager/js/layer_form.js b/data_manager/static/data_manager/js/layer_form.js index 46a4313..fa135fa 100644 --- a/data_manager/static/data_manager/js/layer_form.js +++ b/data_manager/static/data_manager/js/layer_form.js @@ -244,6 +244,29 @@ check_queryable = function(queryable_layers) { $(document).ready(function() { show_layertype_form($('#id_layer_type option:selected').text()); + console.log("CATALOG_TECHNOLOGY: '" + CATALOG_TECHNOLOGY + "'"); + + // If catalog tech supported: + if (CATALOG_TECHNOLOGY != 'Madrona') { + $('#id_catalog_id').height(15); + // TODO: Query for catalog records + // - populate typeahead field with available catalog records + + // $('#id_catalog_id').autocomplete({ + // source: [ + // "Adam", "Becky", "Charlie", "Danielle" + // ] + // }); + + // - Filter records based on: + // - record has layer info + // - record not already in use + } else { + $('#id_catalog_id').hide(); + } + + + $('#id_layer_type').change(function() { show_layertype_form($('#id_layer_type option:selected').text()); }); diff --git a/data_manager/templates/admin/LayerForm.html b/data_manager/templates/admin/LayerForm.html index 175b63f..0167a6f 100644 --- a/data_manager/templates/admin/LayerForm.html +++ b/data_manager/templates/admin/LayerForm.html @@ -3,8 +3,14 @@ {% block extrahead %} {{ block.super }} + + + + {% endblock %} diff --git a/data_manager/urls.py b/data_manager/urls.py index 54402ae..d558881 100644 --- a/data_manager/urls.py +++ b/data_manager/urls.py @@ -19,4 +19,5 @@ re_path(r'^get_layer_details/(?P\d+)$', views.get_layer_details), re_path(r'^wms_capabilities', views.wms_request_capabilities), re_path(r'^get_layer_catalog_content/(?P\d+)/$', views.get_layer_catalog_content), + re_path(r'^get_catalog_records', views.get_catalog_records), ] diff --git a/data_manager/views.py b/data_manager/views.py index 0cbd003..6194c70 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -5,6 +5,7 @@ from django.shortcuts import get_object_or_404, render_to_response from django.template import RequestContext from django.views.decorators.cache import cache_page +from django.conf import settings from .models import * from .serializers import BriefLayerSerializer from rest_framework import viewsets @@ -303,3 +304,40 @@ def wms_request_capabilities(request): result = wms_get_capabilities(url) return JsonResponse(result) + +def get_catalog_records(request): + data = {} + if settings.CATALOG_TECHNOLOGY == "GeoPortal2": + from elasticsearch import Elasticsearch + from elasticsearch_dsl import Search + es = Elasticsearch() + index = settings.ELASTICSEARCH_INDEX + url = settings.CATALOG_SOURCE + if url: + es = es = Elasticsearch(url) + else: + es = es = Elasticsearch() + + search = Search(using=es, index=index) + + search_fields = settings.ELASTICSEARCH_SEARCH_FIELDS + + records = search.source(search_fields) + + records_dict = {} + record_ids = [] + + for record in records.scan(): + record_ids.append(record.meta.id) + record_dict = {} + for index, field in enumerate(['id'] + search_fields): + if index == 0: + record_dict['id'] = record.meta.id + else: + record_dict[field] = record[field] + records_dict[record.meta.id] = record_dict + + data['ids'] = record_ids + data['records'] = records_dict + + return JsonResponse(data) From 9d58c49a5b1fac914a51442e5c45f8fabd9bda15 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Thu, 10 Sep 2020 09:31:59 -0700 Subject: [PATCH 038/127] update elasticsearch record query to filter out non-approved records --- data_manager/views.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data_manager/views.py b/data_manager/views.py index 6194c70..9805951 100644 --- a/data_manager/views.py +++ b/data_manager/views.py @@ -318,7 +318,7 @@ def get_catalog_records(request): else: es = es = Elasticsearch() - search = Search(using=es, index=index) + search = Search(using=es, index=index).query("match", sys_approval_status_s="approved") search_fields = settings.ELASTICSEARCH_SEARCH_FIELDS @@ -339,5 +339,6 @@ def get_catalog_records(request): data['ids'] = record_ids data['records'] = records_dict + data['hits'] = len(record_ids) return JsonResponse(data) From d4d04c0078520f1f825b55e4f33c0fa38f87a42f Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Mon, 14 Sep 2020 15:59:11 -0700 Subject: [PATCH 039/127] getting catalog records for populating layer form when using GeoPortal 2 --- data_manager/admin.py | 9 +- .../migrations/0035_auto_20200911_2051.py | 23 +++ data_manager/models.py | 3 +- data_manager/settings.py | 2 + .../static/data_manager/js/layer_form.js | 193 +++++++++++++++++- data_manager/templates/admin/LayerForm.html | 2 + data_manager/views.py | 17 +- 7 files changed, 241 insertions(+), 8 deletions(-) create mode 100644 data_manager/migrations/0035_auto_20200911_2051.py diff --git a/data_manager/admin.py b/data_manager/admin.py index 2bedd6c..6b491e1 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -93,11 +93,16 @@ class LayerAdmin(ImportExportMixin, nested_admin.NestedModelAdmin): ordering = ('name',) exclude = ('slug_name',) + if settings.CATALOG_TECHNOLOGY not in ['Madrona', None]: + catalog_fields = ('catalog_name', 'catalog_id',) + else: + catalog_fields = None + fieldsets = ( ('BASIC INFO', { 'fields': ( - 'catalog_id', - ('name','layer_type'), + catalog_fields, + ('name','layer_type',), 'url', 'site' ) diff --git a/data_manager/migrations/0035_auto_20200911_2051.py b/data_manager/migrations/0035_auto_20200911_2051.py new file mode 100644 index 0000000..1b39a17 --- /dev/null +++ b/data_manager/migrations/0035_auto_20200911_2051.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.9 on 2020-09-11 20:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('data_manager', '0034_layer_catalog_id'), + ] + + operations = [ + migrations.AddField( + model_name='layer', + name='catalog_name', + field=models.TextField(blank=True, help_text='name of associated record in catalog', null=True, verbose_name='Catalog Record Name'), + ), + migrations.AlterField( + model_name='layer', + name='catalog_id', + field=models.TextField(blank=True, help_text='unique ID of associated record in catalog', null=True, verbose_name='Catalog Record Id'), + ), + ] diff --git a/data_manager/models.py b/data_manager/models.py index 62bbaa5..5cd848e 100644 --- a/data_manager/models.py +++ b/data_manager/models.py @@ -215,7 +215,8 @@ class Layer(models.Model, SiteFlags): data_publish_date = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True, default=None, verbose_name='Date published', help_text='YYYY-MM-DD') #data catalog links - catalog_id = models.TextField(null=True, blank=True, help_text="unique ID of associated record in catalog", verbose_name='Catalog Record') + catalog_name = models.TextField(null=True, blank=True, help_text="name of associated record in catalog", verbose_name='Catalog Record Name') + catalog_id = models.TextField(null=True, blank=True, help_text="unique ID of associated record in catalog", verbose_name='Catalog Record Id') bookmark = models.CharField(max_length=755, blank=True, null=True, help_text='link to view data layer in the planner') kml = models.CharField(max_length=255, blank=True, null=True, help_text='link to download the KML') data_download = models.CharField(max_length=255, blank=True, null=True, help_text='link to download the data') diff --git a/data_manager/settings.py b/data_manager/settings.py index d04ea8d..1b2e427 100644 --- a/data_manager/settings.py +++ b/data_manager/settings.py @@ -5,6 +5,8 @@ DATA_CATALOG_ENABLED = True +DATA_CATALOG_NAME_FIELD = 'title' + CATALOG_TECHNOLOGY = 'Madrona' CATALOG_SOURCE = None diff --git a/data_manager/static/data_manager/js/layer_form.js b/data_manager/static/data_manager/js/layer_form.js index fa135fa..569d6ff 100644 --- a/data_manager/static/data_manager/js/layer_form.js +++ b/data_manager/static/data_manager/js/layer_form.js @@ -241,7 +241,195 @@ check_queryable = function(queryable_layers) { } } +var replace_input_with_select2 = function(id, options) { + var input_field = $('#'+ id); + var original_value = input_field.val(); + var original_name = input_field.attr('name'); + var select2_field_str = ''; + input_field.replaceWith(select2_field_str); + var select2_field = $('#'+ id); + for (var i = 0; i < options.length; i++) { + option = options[i]; + if (typeof(option) == "string"){ + select2_field.append(''); + } else { + select2_field.append(''); + } + } + select2_field.val(original_value); + select2_field.select2(); + + select2_field.change(select_catalog_record); + +} + +var get_catalog_records = function() { + var url = "/data_manager/get_catalog_records"; + $.ajax({ + url: url, + success: function(data) { + catalog_record_data = data; + var record_names = Object.keys(data.record_name_lookup); + options = []; + for (var i = 0; i < record_names.length; i++) { + for (var j = 0; j < data.record_name_lookup[record_names[i]].length; j++){ + options.push({ + 'name': record_names[i], + 'value': data.record_name_lookup[record_names[i]][j] + }); + } + } + + replace_input_with_select2('id_catalog_name', options); + } + }); +} + +var show_spinner = function() { + console.log("TODO: Write 'show_spinner'"); +} + +var hide_spinner = function() { + console.log("TODO: Write 'hide_spinner'"); +} + +var select_catalog_record = function(event, ui) { + show_spinner(); + var selected_name = $( this ).select2('data')[0].text; + var record_id = $( this ).val(); + populate_layer_fields_from_catalog_record(catalog_record_data, record_id, selected_name) +} + +var populate_layer_fields_from_catalog_record = function(catalog_record_data, record_id, selected_name) { + selected_catalog_data = catalog_record_data.records[record_id]; + $('#id_catalog_id').val(record_id); + if ($('#id_name').val() == "") { + $('#id_name').val(selected_name); + } + + if (window.confirm("Do you want to set all form fields from this record?")) { + if (CATALOG_TECHNOLOGY == 'GeoPortal2') { + es_index = catalog_record_data.ELASTICSEARCH_INDEX; + populate_fields_from_elasticsearch(es_index, record_id); + } else { + hide_spinner(); + } + } else { + hide_spinner(); + } + +} + +var populate_fields_from_elasticsearch = function(es_index, record_id){ + // handle multiple IDs + id_list = record_id.split(","); + aggregate_json = false; + for (var i = 0; i < id_list.length; i++) { + id = id_list[i]; + } + url = "/" + es_index + "/_doc/" + record_id; + $.ajax({ + url: url, + success: function(data) { + // get id from data + record_json = data._source; + record_json.id = data._id; + aggregate_catalog_record_values(record_json); + } + }); +} + +// TODO: Determine Tech + +var aggregate_catalog_record_values = function(record_json){ + record_id = record_json.id; + id_list.splice(id_list.indexOf(record_id),1); + + if (!aggregate_json) { + aggregate_json = record_json + } else { + for (var i = 0; i < Object.keys(record_json); i++) { + key = Object.keys(record_json)[i]; + if (Object.keys(aggregate_json).indexOf(key) != -1) { + if (aggregate_json[key].constructor != Array) { + aggregate_json[key] = [ aggregate_json[key] ]; + } + if (record_json[key].constructor != Array) { + record_json[key] = [ record_json[key] ]; + } + aggregate_json[key] = $.union(aggregate_json[key], record_json[key]); + } else { + aggregate_json[key] = record_json[key]; + } + } + } + + if (id_list.length == 0) { + assign_field_values_from_catalog_record(record_json); + } +} + +var assign_field_values_from_catalog_record = function(record_json){ + // TODO: write function to create appropriate list of links and associate them with tech options + replace_input_with_select2('id_url', record_json.links_s); + + // Metadata & Links + /* + id_description + id_kml + id_data_download + id_metadata + id_source + */ + + // Legend + /* + This is technology dependent (ArcGIS and WMS will have very specific options) + id_show_legend [checkbox] + id_legend (url to image file) + id_legend_title + id_legend_subtitle + */ + + // ArcGIS Details (ArcGIS only!) + /* + id_arcgis_layers (comma separated ID #s) + id_disable_arcgis_attributes [ checkbox ] + */ + + // WMS Details (WMS Only!) + /* + This section is already managed by selecting 'WMS help' + If the user selects "WMS" for technology, perhaps explode this and scroll them to it to manage themselves? + */ + + // Attribute Reporting + /* + This cannot be set from the catalog record + */ + + // Style (Arc FeatureService only, which isn't supported yet) + /* + Tackle this when we add FeatureServices + */ + + + + + hide_spinner(); +} + $(document).ready(function() { + + jQuery.fn.extend({ + union: function(array1, array2) { + var hash = {}, union = []; + $.each($.merge($.merge([], array1), array2), function (index, value) { hash[value] = value; }); + $.each(hash, function (key, value) { union.push(key); } ); + return union; + } + }); + show_layertype_form($('#id_layer_type option:selected').text()); console.log("CATALOG_TECHNOLOGY: '" + CATALOG_TECHNOLOGY + "'"); @@ -249,7 +437,10 @@ $(document).ready(function() { // If catalog tech supported: if (CATALOG_TECHNOLOGY != 'Madrona') { $('#id_catalog_id').height(15); + $('#id_catalog_id').prop('disabled', true); + $('#id_catalog_name').height(15); // TODO: Query for catalog records + get_catalog_records(); // - populate typeahead field with available catalog records // $('#id_catalog_id').autocomplete({ @@ -257,7 +448,7 @@ $(document).ready(function() { // "Adam", "Becky", "Charlie", "Danielle" // ] // }); - + // - Filter records based on: // - record has layer info // - record not already in use diff --git a/data_manager/templates/admin/LayerForm.html b/data_manager/templates/admin/LayerForm.html index 0167a6f..c4a2c18 100644 --- a/data_manager/templates/admin/LayerForm.html +++ b/data_manager/templates/admin/LayerForm.html @@ -4,8 +4,10 @@ {% block extrahead %} {{ block.super }} + + From c201f1fc565ae807f18b8f671682ecca63dd2cb0 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Tue, 15 Sep 2020 16:39:33 -0700 Subject: [PATCH 041/127] pulling in layer def and identifying source tech for catalog records --- .../data_manager/js/catalog/GeoPortal2.js | 159 ++++++++++++++++++ .../static/data_manager/js/layer_form.js | 44 ++++- data_manager/templates/admin/LayerForm.html | 5 +- 3 files changed, 201 insertions(+), 7 deletions(-) create mode 100644 data_manager/static/data_manager/js/catalog/GeoPortal2.js diff --git a/data_manager/static/data_manager/js/catalog/GeoPortal2.js b/data_manager/static/data_manager/js/catalog/GeoPortal2.js new file mode 100644 index 0000000..5d82f48 --- /dev/null +++ b/data_manager/static/data_manager/js/catalog/GeoPortal2.js @@ -0,0 +1,159 @@ +/* + * A lot of the code below is either copied from or inspired by work from ESRI's + * GeoPortal Server Catalog work, licensed under the Apache License, Version 2.0 + * Their licence note is copied verbatim below. + * You can find the whole project (license, code, and all) at this site: + * + * https://github.com/Esri/geoportal-server-catalog + * + * In particular, this leverages code and logic from this file: + * + * https://github.com/Esri/geoportal-server-catalog/blob/master/geoportal/src/main/webapp/app/etc/ServiceType.js + * + */ + +/* < ESRI License Disclaimer > */ + + /* See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * Esri Inc. licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* */ + +get_service_type = function(url) { + + /* + type + ArcGIS - FeatureServer MapServer ImageServer VectorTileServer StreamServer + -- Currently of these we support MapServer as "ArcRest" + -- In theory 'Vector' nearly supports FeatureServer + -- In theory 'VectorTile' nearly supports VectorTileServer + WMS + WMTS - not yet working with wab 2.0 + -- Not sure if we support this, we have WMS with extra settings to suppot "T" + -- Wait, this might just by XYZ tiles + WFS - not yet with wab 2.0 + -- I do not believe this is supported + KML + -- Not supported, but good to find for a KML link. + GeoRSS + -- Not Supported + CSV + -- Not Supported + TO ADD: + -- XYZ + -- Vector (.json, etc..) + -- VectorTile (?) + */ + + /* + http://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/World_Cities/FeatureServer/0 + http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_Tapestry/MapServer + http://imagery.arcgisonline.com/ArcGIS/rest/services/LandsatGLS/VegetationAnalysis/ImageServer + + http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi?service=WMS&request=GetCapabilities + http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_month_age_animated.kml + http://www.gdacs.org/xml/rss.xml + http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.csv + + http://services2.arcgis.com/NZMqCJwY3kMjFOqf/arcgis/rest/services/Metro/FeatureServer + http://services2.arcgis.com/NZMqCJwY3kMjFOqf/arcgis/rest/services/Metro/FeatureServer/8 + http://maps7.arcgisonline.com/arcgis/rest/services/USDA_USFS_2014_Wildfire_Hazard_Potential/MapServer + http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_Tapestry/MapServer (tiles) + http://imagery.arcgisonline.com/ArcGIS/rest/services/LandsatGLS/VegetationAnalysis/ImageServer + https://geoeventsample3.esri.com:6443/arcgis/rest/services/SeattleBus/StreamServer + + http://basemaps.arcgis.com/arcgis/rest/services/World_Basemap/VectorTileServer + http://basemaps.arcgis.com/arcgis/rest/services/World_Basemap/VectorTileServer/resources/styles/root.json + http://geodesign.maps.arcgis.com/sharing/rest/content/items/bdf1eec3fa79456c8c7c2bb62f86dade/resources/styles/root.json + + http://suite.opengeo.org/geoserver/wfs?request=GetCapabilities&service=WFS&version=1.1.0 + http://v2.suite.opengeo.org/geoserver/gwc/service/wmts?request=GetCapabilities&service=WMTS&version=1.0.0 + http://www.ndbc.noaa.gov/kml/marineobs_as_kml.php + */ + + var endsWith = function(v,sfx) { + return (v.indexOf(sfx,(v.length-sfx.length)) !== -1); + }; + + var lc, type = null; + if (typeof url === "string" && + (url.indexOf("http://") === 0 || url.indexOf("https://") === 0)) { + lc = url.toLowerCase(); + if (lc.indexOf("?service=") > 0 || lc.indexOf("&service=") > 0) { + if (lc.indexOf("?service=wms") > 0 || lc.indexOf("&service=wms") > 0) { + type = "WMS"; + } else if (lc.indexOf("?service=wmts") > 0 || lc.indexOf("&service=wmts") > 0) { + //type = "WMTS"; + } else if (lc.indexOf("?service=wfs") > 0 || lc.indexOf("&service=wfs") > 0) { + //type = "WFS"; + } else if (lc.indexOf("?service=wcs") > 0 || lc.indexOf("&service=wcs") > 0) { + } + } else if (lc.indexOf("/com.esri.wms.esrimap") !== -1) { + type = "WMS"; + } else if (lc.indexOf("/mapserver/wmsserver") !== -1) { + type = "WMS"; + } else if (lc.indexOf("/rest/services") > 0) { + if (lc.indexOf("/mapserver") > 0) { + type = "MapServer"; + } else if (lc.indexOf("/featureserver") > 0) { + type = "FeatureServer"; + } else if (lc.indexOf("/imageserver") > 0) { + if (endsWith(lc,"/imageserver")) type = "ImageServer"; + } else if (lc.indexOf("/streamserver") > 0) { + type = "StreamServer"; + } else if (lc.indexOf("/vectortileserver") > 0 || + lc.indexOf("/resources/styles/root.json") > 0) { + if (VectorTileLayer && VectorTileLayer.supported()) { + type = "VectorTileServer"; + } + } + } + if (type === null) { + if (endsWith(lc,".kml") || endsWith(lc,".kmz") || endsWith(lc,"kml.php") || + lc.indexOf("?f=kml") > 0 || lc.indexOf("&f=kml") > 0 || + lc.indexOf("?f=kmz") > 0 || lc.indexOf("&f=kmz") > 0) { + type = "KML"; + } else if (endsWith(lc,".csv") || lc.indexOf("f=kml") > 0) { + type = "CSV"; + } else if (endsWith(lc,".xml") && + (lc.indexOf("rss") > 0 || lc.indexOf("georss") > 0)) { + type = "GeoRSS"; + } else if (endsWith(lc,".zip")) { + type = "Shapefile"; + } else if (endsWith(lc, ".json") || lc.indexOf("json") > 0) { // Begin MarinePlanner edits + type = "Vector"; + } else if (endsWith(lc, "wms") || endsWith(lc, "wms?") || + lc.indexOf("/wms/") > 0 || lc.indexOf('mapcache') > 0 || + lc.indexOf("wms?/") > 0 || endsWith(lc, "ows") || + endsWith(lc, "ows?") ) { + type = "WMS"; + } else if (endsWith(lc, ".png") || lc.indexOf("/tiles/") > 0 || + lc.indexOf("/tile/") > 0) { + type = "XYZ"; + } + } + } + if (type === "MapServer" || type === "ImageServer") { + type = "ArcRest"; + } + if (type === "FeatureServer") { + type = "Vector"; + } + if (type === "VectorTileServer") { + type = "VectorTile"; + } + + return type +}; diff --git a/data_manager/static/data_manager/js/layer_form.js b/data_manager/static/data_manager/js/layer_form.js index d5d581c..92d24ba 100644 --- a/data_manager/static/data_manager/js/layer_form.js +++ b/data_manager/static/data_manager/js/layer_form.js @@ -241,6 +241,20 @@ check_queryable = function(queryable_layers) { } } +var change_layer_url = function(self) { + var url = $(this).val(); + var type = null; + if (typeof(get_service_type) == "function") { + type = get_service_type(url); + } else { + console.log('No get_service_type() function defined for CATALOG_TECHNOLOGY: ' + CATALOG_TECHNOLOGY); + } + + if ($('#id_layer_type option').map(function() { return $(this).val(); }).toArray().indexOf(type) >= 0) { + $('#id_layer_type').val(type); + } +} + var replace_input_with_select2 = function(id, options) { var input_field = $('#'+ id); var initial_width = input_field.parent().width(); @@ -250,25 +264,43 @@ var replace_input_with_select2 = function(id, options) { // TODO: Identify if element is already select2 - var original_value = input_field.val(); var original_name = input_field.attr('name'); - var select2_field_str = ''; - input_field.replaceWith(select2_field_str); - var select2_field = $('#'+ id); + if (!input_field.hasClass("select2-hidden-accessible")) { + var select2_field_str = ''; + input_field.replaceWith(select2_field_str); + var select2_field = $('#'+ id); + } else { + input_field.html('').select2({data: []}).trigger('change'); + select2_field = input_field; + } for (var i = 0; i < options.length; i++) { - option = options[i]; + var option = options[i]; if (typeof(option) == "string"){ select2_field.append(''); - } else { + } else if (typeof(option) == 'undefined'){ + select2_field.append(''); + } else if (option.hasOwnProperty('value') && option.hasOwnProperty('name')){ select2_field.append(''); } } select2_field.val(original_value); + if (select2_field.val() == null && options.length == 1) { + if (typeof(options[0]) == "string") { + select2_field.val(options[0]); + select2_field.trigger('change'); + } else if (typeof(options[0]) == "object" && Object.keys(options[0]).indexOf('value') != -1) { + select2_field.val(options[0].value); + select2_field.trigger('change'); + } + } if (id != 'id_catalog_name') { select2_field.select2({ tags: true }); + if (id == "id_url") { + select2_field.change(change_layer_url); + } } else { select2_field.select2(); select2_field.change(select_catalog_record); diff --git a/data_manager/templates/admin/LayerForm.html b/data_manager/templates/admin/LayerForm.html index 917b2af..22707ef 100644 --- a/data_manager/templates/admin/LayerForm.html +++ b/data_manager/templates/admin/LayerForm.html @@ -15,8 +15,11 @@ - + {% ifequal CATALOG_TECHNOLOGY 'GeoPortal2' %} + + {% endifequal %} + {% endblock %} {% block field_sets %} From 101993e1fd6678b3642ea8e37f4552d0440f5f15 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Tue, 15 Sep 2020 18:30:21 -0700 Subject: [PATCH 042/127] cleaning up catalog record options for layer fields --- .../static/data_manager/js/layer_form.js | 52 ++++++++++--------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/data_manager/static/data_manager/js/layer_form.js b/data_manager/static/data_manager/js/layer_form.js index 92d24ba..b331713 100644 --- a/data_manager/static/data_manager/js/layer_form.js +++ b/data_manager/static/data_manager/js/layer_form.js @@ -262,8 +262,6 @@ var replace_input_with_select2 = function(id, options) { initial_width = input_field.parent().parent().parent().width() * 0.97; } - // TODO: Identify if element is already select2 - var original_value = input_field.val(); var original_name = input_field.attr('name'); if (!input_field.hasClass("select2-hidden-accessible")) { @@ -274,6 +272,11 @@ var replace_input_with_select2 = function(id, options) { input_field.html('').select2({data: []}).trigger('change'); select2_field = input_field; } + + if (id != "id_catalog_name") { + options = union(['', original_value], options); + } + for (var i = 0; i < options.length; i++) { var option = options[i]; if (typeof(option) == "string"){ @@ -304,6 +307,7 @@ var replace_input_with_select2 = function(id, options) { } else { select2_field.select2(); select2_field.change(select_catalog_record); + select2_field.trigger('change'); } select2_field.siblings('.select2').width(initial_width); @@ -344,7 +348,9 @@ var select_catalog_record = function(event, ui) { show_spinner(); var selected_name = $( this ).select2('data')[0].text; var record_id = $( this ).val(); - populate_layer_fields_from_catalog_record(catalog_record_data, record_id, selected_name) + if (record_id) { + populate_layer_fields_from_catalog_record(catalog_record_data, record_id, selected_name); + } } var populate_layer_fields_from_catalog_record = function(catalog_record_data, record_id, selected_name) { @@ -354,16 +360,16 @@ var populate_layer_fields_from_catalog_record = function(catalog_record_data, re $('#id_name').val(selected_name); } - if (window.confirm("Do you want to set all form fields from this record?")) { + // if (window.confirm("Do you want to set all form fields from the selected catalog record?")) { if (CATALOG_TECHNOLOGY == 'GeoPortal2') { es_index = catalog_record_data.ELASTICSEARCH_INDEX; populate_fields_from_elasticsearch(es_index, record_id); } else { hide_spinner(); } - } else { - hide_spinner(); - } + // } else { + // hide_spinner(); + // } } @@ -404,7 +410,7 @@ var aggregate_catalog_record_values = function(record_json){ if (record_json[key].constructor != Array) { record_json[key] = [ record_json[key] ]; } - aggregate_json[key] = $.union(aggregate_json[key], record_json[key]); + aggregate_json[key] = union(aggregate_json[key], record_json[key]); } else { aggregate_json[key] = record_json[key]; } @@ -418,7 +424,7 @@ var aggregate_catalog_record_values = function(record_json){ var assign_field_values_from_catalog_record = function(record_json){ // TODO: write function to create appropriate list of links and associate them with tech options - replace_input_with_select2('id_url', record_json.links_s); + replace_input_with_select2('id_url', union([],record_json.links_s)); // Metadata & Links /* @@ -430,7 +436,7 @@ var assign_field_values_from_catalog_record = function(record_json){ */ - replace_input_with_select2('id_description', [record_json.description, record_json.apiso_Abstract_txt]); + replace_input_with_select2('id_description', union([record_json.description], [record_json.apiso_Abstract_txt])); $('#select2-id_description-container').addClass('select2-textarea'); $('#id_description').siblings('.select2').find('span.select2-selection').height(150); @@ -441,13 +447,13 @@ var assign_field_values_from_catalog_record = function(record_json){ } } if (kml_options.length > 0) { - replace_input_with_select2('id_kml', kml_options); + replace_input_with_select2('id_kml', union([],kml_options)); } else { - replace_input_with_select2('id_kml', record_json.links_s); + replace_input_with_select2('id_kml', union([],record_json.links_s)); } - replace_input_with_select2('id_data_download', [record_json.url_http_download_s]); - replace_input_with_select2('id_metadata', [record_json.src_uri_s]); - replace_input_with_select2('id_source', [record_json.url_website_s]); + replace_input_with_select2('id_data_download', union([record_json.url_http_download_s], record_json.links_s)); + replace_input_with_select2('id_metadata', union([record_json.src_uri_s],record_json.links_s)); + replace_input_with_select2('id_source', union([],record_json.links_s)); // Legend /* @@ -486,16 +492,14 @@ var assign_field_values_from_catalog_record = function(record_json){ hide_spinner(); } -$(document).ready(function() { +var union = function(array1, array2) { + var hash = {}, union_arr = []; + $.each($.merge($.merge([], array1), array2), function (index, value) { hash[value] = value; }); + $.each(hash, function (key, value) { union_arr.push(key); } ); + return union_arr; +} - jQuery.fn.extend({ - union: function(array1, array2) { - var hash = {}, union = []; - $.each($.merge($.merge([], array1), array2), function (index, value) { hash[value] = value; }); - $.each(hash, function (key, value) { union.push(key); } ); - return union; - } - }); +$(document).ready(function() { show_layertype_form($('#id_layer_type option:selected').text()); From 50da510fcae5d9bc5c8bc8a26c3dd5efcbcc1444 Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Thu, 17 Sep 2020 09:37:44 -0700 Subject: [PATCH 043/127] moving geoportal2 logic into standalone JS file, adding source detection and arcgis layer reference --- data_manager/admin.py | 3 +- .../data_manager/js/catalog/GeoPortal2.js | 163 ++++++++++++++++++ .../static/data_manager/js/layer_form.js | 126 +------------- 3 files changed, 171 insertions(+), 121 deletions(-) diff --git a/data_manager/admin.py b/data_manager/admin.py index 6b491e1..957464f 100644 --- a/data_manager/admin.py +++ b/data_manager/admin.py @@ -94,7 +94,8 @@ class LayerAdmin(ImportExportMixin, nested_admin.NestedModelAdmin): exclude = ('slug_name',) if settings.CATALOG_TECHNOLOGY not in ['Madrona', None]: - catalog_fields = ('catalog_name', 'catalog_id',) + # catalog_fields = ('catalog_name', 'catalog_id',) + catalog_fields = 'catalog_name' else: catalog_fields = None diff --git a/data_manager/static/data_manager/js/catalog/GeoPortal2.js b/data_manager/static/data_manager/js/catalog/GeoPortal2.js index 5d82f48..801252b 100644 --- a/data_manager/static/data_manager/js/catalog/GeoPortal2.js +++ b/data_manager/static/data_manager/js/catalog/GeoPortal2.js @@ -1,3 +1,166 @@ + +//////////////////////////////////////////////////////////////////////////////// +// +// Elasticsearch + Geoportal +// +//////////////////////////////////////////////////////////////////////////////// + + +var populate_fields_from_catalog = function(catalog_record_data, record_id){ + es_index = catalog_record_data.ELASTICSEARCH_INDEX; + // handle multiple IDs + id_list = record_id.split(","); + aggregate_json = false; + for (var i = 0; i < id_list.length; i++) { + id = id_list[i]; + } + url = "/" + es_index + "/_doc/" + record_id; + $.ajax({ + url: url, + success: function(data) { + // get id from data + record_json = data._source; + record_json.id = data._id; + aggregate_catalog_record_values(record_json); + } + }); +} + +// TODO: Determine Tech + +var aggregate_catalog_record_values = function(record_json){ + record_id = record_json.id; + id_list.splice(id_list.indexOf(record_id),1); + + if (!aggregate_json) { + aggregate_json = record_json + } else { + for (var i = 0; i < Object.keys(record_json); i++) { + key = Object.keys(record_json)[i]; + if (Object.keys(aggregate_json).indexOf(key) != -1) { + if (aggregate_json[key].constructor != Array) { + aggregate_json[key] = [ aggregate_json[key] ]; + } + if (record_json[key].constructor != Array) { + record_json[key] = [ record_json[key] ]; + } + aggregate_json[key] = union(aggregate_json[key], record_json[key]); + } else { + aggregate_json[key] = record_json[key]; + } + } + } + + if (id_list.length == 0) { + assign_field_values_from_catalog_record(record_json); + } +} + +var assign_field_values_from_catalog_record = function(record_json){ + // TODO: write function to create appropriate list of links and associate them with tech options + replace_input_with_select2('id_url', union([],record_json.links_s)); + + // Metadata & Links + /* + id_description + id_kml + id_data_download + id_metadata + id_source + */ + + + replace_input_with_select2('id_description', union([record_json.description], [record_json.apiso_Abstract_txt])); + $('#select2-id_description-container').addClass('select2-textarea'); + $('#id_description').siblings('.select2').find('span.select2-selection').height(150); + + var kml_options = []; + for (var i = 0; i < record_json.links_s.length; i++) { + if (record_json.links_s[i].toLowerCase().indexOf('kml') != -1) { + kml_options.push(record_json.links_s[i]); + } + } + if (kml_options.length > 0) { + replace_input_with_select2('id_kml', union([],kml_options)); + } else { + replace_input_with_select2('id_kml', union([],record_json.links_s)); + } + replace_input_with_select2('id_data_download', union([record_json.url_http_download_s], record_json.links_s)); + replace_input_with_select2('id_metadata', union([record_json.src_uri_s],record_json.links_s)); + replace_input_with_select2('id_source', union([],record_json.links_s)); + + // Legend + /* + This is technology dependent (ArcGIS and WMS will have very specific options) + id_show_legend [checkbox] + id_legend (url to image file) + id_legend_title + id_legend_subtitle + */ + + // ArcGIS Details (ArcGIS only!) + /* + id_arcgis_layers (comma separated ID #s) + id_disable_arcgis_attributes [ checkbox ] + */ + + // if (get_service_type($('#id_url').val()) == "ArcRest" && $('#id_layer_type').val() == "ArcRest") { + if ($('#id_layer_type').val() == "ArcRest") { + var url = $('#id_url').val(); + if (url.toLowerCase().indexOf('/export') >= 0) { + url = url.toLowerCase().split('/export')[0]; + } + if (url.toLowerCase().indexOf('/mapserver')) { + $.ajax({ + url: url + "?f=json", + success: function(data) { + if (typeof data === "object") { + response = data; + } else { + response = JSON.parse(data); + } + layers = []; + for (var i = 0; i < data.layers.length; i++) { + var layer = data.layers[i]; + layers.push({id:layer.id.toString(), name: layer.name}); + } + var table_element = ""; + for (var i = 0; i < layers.length; i++) { + layer = layers[i]; + var row = ""; + table_element = table_element + row; + } + table_element = table_element + "
IDNameLink
" + layer.id + "" + layer.name + "Details
"; + $('.arcgis-details-layer-table').remove(); + $('div.field-box.field-arcgis_layers').append(table_element); + } + }) + } + } + + + // WMS Details (WMS Only!) + /* + This section is already managed by selecting 'WMS help' + If the user selects "WMS" for technology, perhaps explode this and scroll them to it to manage themselves? + */ + + // Attribute Reporting + /* + This cannot be set from the catalog record + */ + + // Style (Arc FeatureService only, which isn't supported yet) + /* + Tackle this when we add FeatureServices + */ + + + + + hide_spinner(); +} + /* * A lot of the code below is either copied from or inspired by work from ESRI's * GeoPortal Server Catalog work, licensed under the Apache License, Version 2.0 diff --git a/data_manager/static/data_manager/js/layer_form.js b/data_manager/static/data_manager/js/layer_form.js index b331713..8afe292 100644 --- a/data_manager/static/data_manager/js/layer_form.js +++ b/data_manager/static/data_manager/js/layer_form.js @@ -350,6 +350,8 @@ var select_catalog_record = function(event, ui) { var record_id = $( this ).val(); if (record_id) { populate_layer_fields_from_catalog_record(catalog_record_data, record_id, selected_name); + } else { + hide_spinner(); } } @@ -360,10 +362,12 @@ var populate_layer_fields_from_catalog_record = function(catalog_record_data, re $('#id_name').val(selected_name); } + if (populate_fields_from_catalog && typeof populate_fields_from_catalog === "function") { + populate_fields_from_catalog(catalog_record_data, record_id); + } // if (window.confirm("Do you want to set all form fields from the selected catalog record?")) { if (CATALOG_TECHNOLOGY == 'GeoPortal2') { - es_index = catalog_record_data.ELASTICSEARCH_INDEX; - populate_fields_from_elasticsearch(es_index, record_id); + } else { hide_spinner(); } @@ -373,124 +377,6 @@ var populate_layer_fields_from_catalog_record = function(catalog_record_data, re } -var populate_fields_from_elasticsearch = function(es_index, record_id){ - // handle multiple IDs - id_list = record_id.split(","); - aggregate_json = false; - for (var i = 0; i < id_list.length; i++) { - id = id_list[i]; - } - url = "/" + es_index + "/_doc/" + record_id; - $.ajax({ - url: url, - success: function(data) { - // get id from data - record_json = data._source; - record_json.id = data._id; - aggregate_catalog_record_values(record_json); - } - }); -} - -// TODO: Determine Tech - -var aggregate_catalog_record_values = function(record_json){ - record_id = record_json.id; - id_list.splice(id_list.indexOf(record_id),1); - - if (!aggregate_json) { - aggregate_json = record_json - } else { - for (var i = 0; i < Object.keys(record_json); i++) { - key = Object.keys(record_json)[i]; - if (Object.keys(aggregate_json).indexOf(key) != -1) { - if (aggregate_json[key].constructor != Array) { - aggregate_json[key] = [ aggregate_json[key] ]; - } - if (record_json[key].constructor != Array) { - record_json[key] = [ record_json[key] ]; - } - aggregate_json[key] = union(aggregate_json[key], record_json[key]); - } else { - aggregate_json[key] = record_json[key]; - } - } - } - - if (id_list.length == 0) { - assign_field_values_from_catalog_record(record_json); - } -} - -var assign_field_values_from_catalog_record = function(record_json){ - // TODO: write function to create appropriate list of links and associate them with tech options - replace_input_with_select2('id_url', union([],record_json.links_s)); - - // Metadata & Links - /* - id_description - id_kml - id_data_download - id_metadata - id_source - */ - - - replace_input_with_select2('id_description', union([record_json.description], [record_json.apiso_Abstract_txt])); - $('#select2-id_description-container').addClass('select2-textarea'); - $('#id_description').siblings('.select2').find('span.select2-selection').height(150); - - var kml_options = []; - for (var i = 0; i < record_json.links_s.length; i++) { - if (record_json.links_s[i].toLowerCase().indexOf('kml') != -1) { - kml_options.push(record_json.links_s[i]); - } - } - if (kml_options.length > 0) { - replace_input_with_select2('id_kml', union([],kml_options)); - } else { - replace_input_with_select2('id_kml', union([],record_json.links_s)); - } - replace_input_with_select2('id_data_download', union([record_json.url_http_download_s], record_json.links_s)); - replace_input_with_select2('id_metadata', union([record_json.src_uri_s],record_json.links_s)); - replace_input_with_select2('id_source', union([],record_json.links_s)); - - // Legend - /* - This is technology dependent (ArcGIS and WMS will have very specific options) - id_show_legend [checkbox] - id_legend (url to image file) - id_legend_title - id_legend_subtitle - */ - - // ArcGIS Details (ArcGIS only!) - /* - id_arcgis_layers (comma separated ID #s) - id_disable_arcgis_attributes [ checkbox ] - */ - - // WMS Details (WMS Only!) - /* - This section is already managed by selecting 'WMS help' - If the user selects "WMS" for technology, perhaps explode this and scroll them to it to manage themselves? - */ - - // Attribute Reporting - /* - This cannot be set from the catalog record - */ - - // Style (Arc FeatureService only, which isn't supported yet) - /* - Tackle this when we add FeatureServices - */ - - - - - hide_spinner(); -} var union = function(array1, array2) { var hash = {}, union_arr = []; From 1ca85053612ee4f2351062bd991a389173e05f0f Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Thu, 17 Sep 2020 09:38:46 -0700 Subject: [PATCH 044/127] styling layer form arcgis layer id reference --- data_manager/static/admin/data_manager/css/layer_form.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data_manager/static/admin/data_manager/css/layer_form.css b/data_manager/static/admin/data_manager/css/layer_form.css index 4b704f0..6dbaa8c 100644 --- a/data_manager/static/admin/data_manager/css/layer_form.css +++ b/data_manager/static/admin/data_manager/css/layer_form.css @@ -9,3 +9,8 @@ .select2-container--default .select2-selection--single .select2-selection__arrow { visibility: hidden; } + +.arcgis-details-layer-table { + float: right; + margin-top: -50px; +} From 087e836ec861a647f9fc55f833c6ad98bd5b190f Mon Sep 17 00:00:00 2001 From: Ryan Hodges Date: Thu, 17 Sep 2020 16:51:39 -0700 Subject: [PATCH 045/127] adding layer form spinner and allowing blank option for catalog name --- .../admin/data_manager/css/layer_form.css | 16 +++ .../data_manager/js/catalog/GeoPortal2.js | 107 ++++++++++-------- .../static/data_manager/js/layer_form.js | 50 ++++++-- data_manager/templates/admin/LayerForm.html | 5 + 4 files changed, 122 insertions(+), 56 deletions(-) diff --git a/data_manager/static/admin/data_manager/css/layer_form.css b/data_manager/static/admin/data_manager/css/layer_form.css index 6dbaa8c..dd2ae83 100644 --- a/data_manager/static/admin/data_manager/css/layer_form.css +++ b/data_manager/static/admin/data_manager/css/layer_form.css @@ -14,3 +14,19 @@ float: right; margin-top: -50px; } + +/************************************* + * Spinner Dialog + ************************************/ +.ui-dialog.ui-widget.ui-widget-content { + border-radius: 10px; + padding: 0 +} +.ui-dialog.ui-widget.ui-widget-content .ui-dialog-titlebar { + border-radius: 9px 9px 0 0; +} + +#spinner-dialog img { + display: block; + margin: 30px auto; +} diff --git a/data_manager/static/data_manager/js/catalog/GeoPortal2.js b/data_manager/static/data_manager/js/catalog/GeoPortal2.js index 801252b..7bb35af 100644 --- a/data_manager/static/data_manager/js/catalog/GeoPortal2.js +++ b/data_manager/static/data_manager/js/catalog/GeoPortal2.js @@ -7,23 +7,28 @@ var populate_fields_from_catalog = function(catalog_record_data, record_id){ - es_index = catalog_record_data.ELASTICSEARCH_INDEX; - // handle multiple IDs - id_list = record_id.split(","); - aggregate_json = false; - for (var i = 0; i < id_list.length; i++) { - id = id_list[i]; - } - url = "/" + es_index + "/_doc/" + record_id; - $.ajax({ - url: url, - success: function(data) { - // get id from data - record_json = data._source; - record_json.id = data._id; - aggregate_catalog_record_values(record_json); + if (record_id == null || record_id == "null") { + replace_all_select2_with_input(); + hide_spinner(); + } else { + es_index = catalog_record_data.ELASTICSEARCH_INDEX; + // handle multiple IDs + id_list = record_id.split(","); + aggregate_json = false; + for (var i = 0; i < id_list.length; i++) { + id = id_list[i]; } - }); + url = "/" + es_index + "/_doc/" + record_id; + $.ajax({ + url: url, + success: function(data) { + // get id from data + record_json = data._source; + record_json.id = data._id; + aggregate_catalog_record_values(record_json); + } + }); + } } // TODO: Determine Tech @@ -56,6 +61,41 @@ var aggregate_catalog_record_values = function(record_json){ } } +var assign_field_values_from_source_technology = function() { + if ($('#id_layer_type').val() == "ArcRest") { + var url = $('#id_url').val(); + if (url.toLowerCase().indexOf('/export') >= 0) { + url = url.toLowerCase().split('/export')[0]; + } + if (url.toLowerCase().indexOf('/mapserver') >= 0) { + $.ajax({ + url: url + "?f=json", + success: function(data) { + if (typeof data === "object") { + response = data; + } else { + response = JSON.parse(data); + } + layers = []; + for (var i = 0; i < data.layers.length; i++) { + var layer = data.layers[i]; + layers.push({id:layer.id.toString(), name: layer.name}); + } + var table_element = ""; + for (var i = 0; i < layers.length; i++) { + layer = layers[i]; + var row = ""; + table_element = table_element + row; + } + table_element = table_element + "
IDNameLink
" + layer.id + "" + layer.name + "Details
"; + $('.arcgis-details-layer-table').remove(); + $('div.field-box.field-arcgis_layers').append(table_element); + } + }) + } + } +} + var assign_field_values_from_catalog_record = function(record_json){ // TODO: write function to create appropriate list of links and associate them with tech options replace_input_with_select2('id_url', union([],record_json.links_s)); @@ -104,39 +144,10 @@ var assign_field_values_from_catalog_record = function(record_json){ id_disable_arcgis_attributes [ checkbox ] */ + assign_field_values_from_source_technology(); + // if (get_service_type($('#id_url').val()) == "ArcRest" && $('#id_layer_type').val() == "ArcRest") { - if ($('#id_layer_type').val() == "ArcRest") { - var url = $('#id_url').val(); - if (url.toLowerCase().indexOf('/export') >= 0) { - url = url.toLowerCase().split('/export')[0]; - } - if (url.toLowerCase().indexOf('/mapserver')) { - $.ajax({ - url: url + "?f=json", - success: function(data) { - if (typeof data === "object") { - response = data; - } else { - response = JSON.parse(data); - } - layers = []; - for (var i = 0; i < data.layers.length; i++) { - var layer = data.layers[i]; - layers.push({id:layer.id.toString(), name: layer.name}); - } - var table_element = ""; - for (var i = 0; i < layers.length; i++) { - layer = layers[i]; - var row = ""; - table_element = table_element + row; - } - table_element = table_element + "
IDNameLink
" + layer.id + "" + layer.name + "Details
"; - $('.arcgis-details-layer-table').remove(); - $('div.field-box.field-arcgis_layers').append(table_element); - } - }) - } - } + // WMS Details (WMS Only!) diff --git a/data_manager/static/data_manager/js/layer_form.js b/data_manager/static/data_manager/js/layer_form.js index 8afe292..7af6f32 100644 --- a/data_manager/static/data_manager/js/layer_form.js +++ b/data_manager/static/data_manager/js/layer_form.js @@ -9,7 +9,7 @@ show_layertype_form = function(layertype) { if (url.length > 0) { if ($('#id_wms_help').is(':checked')) { - + show_spinner(); $.ajax({ url: '/data_manager/wms_capabilities/', data: { @@ -154,10 +154,12 @@ show_layertype_form = function(layertype) { } } check_queryable(data.queryable); + hide_spinner(); }, error: function(data) { url = $('#id_url').val(); err_msg = 'ERROR: Layer url ' + url + ' does not appear to be a valid WMS endpoint.' + hide_spinner(); window.alert(err_msg); } }); @@ -246,13 +248,36 @@ var change_layer_url = function(self) { var type = null; if (typeof(get_service_type) == "function") { type = get_service_type(url); + if ($('#id_layer_type option').map(function() { return $(this).val(); }).toArray().indexOf(type) >= 0) { + $('#id_layer_type').val(type); + $('#id_layer_type').trigger('change'); + } } else { console.log('No get_service_type() function defined for CATALOG_TECHNOLOGY: ' + CATALOG_TECHNOLOGY); } +} - if ($('#id_layer_type option').map(function() { return $(this).val(); }).toArray().indexOf(type) >= 0) { - $('#id_layer_type').val(type); +var replace_all_select2_with_input = function() { + var sel2_fields = $('.select2').siblings('select.select2-hidden-accessible').not('#id_catalog_name'); + for (var i = 0; i < sel2_fields.length; i++) { + var field_id = $(sel2_fields[i]).attr('id'); + var field_name = $(sel2_fields[i]).attr('name'); + var field_value = $(sel2_fields[i]).val(); + var textarea_fields = ['id_description']; + if (textarea_fields.indexOf(field_id) >= 0) { + var field_open = ''; - } else { - var field_open = '' + field_close; - $(sel2_fields[i]).replaceWith(input_field); - $('#' + field_id).val(field_value); - $('#' + field_id).siblings('.select2').remove(); - // $('#' + field_id).width("80%"); - } - -} - -var replace_input_with_select2 = function(id, options) { - var input_field = $('#'+ id); - var initial_width = input_field.parent().width(); - if (initial_width == 0) { - initial_width = input_field.parent().parent().parent().width() * 0.97; - } - - var original_value = input_field.val(); - var original_name = input_field.attr('name'); - if (!input_field.hasClass("select2-hidden-accessible")) { - var select2_field_str = ''; - input_field.replaceWith(select2_field_str); - var select2_field = $('#'+ id); - } else { - input_field.html('').select2({data: []}).trigger('change'); - select2_field = input_field; - } - - if (id != "id_catalog_name") { - options = union(['', original_value], options); - } - - for (var i = 0; i < options.length; i++) { - var option = options[i]; - if (typeof(option) == "string"){ - select2_field.append(''); - } else if (typeof(option) == 'undefined'){ - select2_field.append(''); - } else if (option.hasOwnProperty('value') && option.hasOwnProperty('name')){ - select2_field.append(''); - } - } - select2_field.val(original_value); - if (select2_field.val() == null && options.length == 1) { - if (typeof(options[0]) == "string") { - select2_field.val(options[0]); - select2_field.trigger('change'); - } else if (typeof(options[0]) == "object" && Object.keys(options[0]).indexOf('value') != -1) { - select2_field.val(options[0].value); - select2_field.trigger('change'); - } - } - if (id != 'id_catalog_name') { - select2_field.select2({ - tags: true - }); - if (id == "id_url") { - select2_field.change(change_layer_url); - } - } else { - select2_field.select2(); - select2_field.change(select_catalog_record); - select2_field.trigger('change'); - } - - select2_field.siblings('.select2').width(initial_width); - -} - -var get_catalog_records = function() { - var url = "/data_manager/get_catalog_records"; - $.ajax({ - url: url, - success: function(data) { - catalog_record_data = data; - var record_names = Object.keys(data.record_name_lookup); - options = [{'name': '', 'value': null}]; - for (var i = 0; i < record_names.length; i++) { - for (var j = 0; j < data.record_name_lookup[record_names[i]].length; j++){ - options.push({ - 'name': record_names[i], - 'value': data.record_name_lookup[record_names[i]][j] - }); - } - } - - replace_input_with_select2('id_catalog_name', options); - } - }); -} - -var show_spinner = function() { - $('#spinner-dialog').dialog('open'); -} - -var hide_spinner = function() { - $('#spinner-dialog').dialog('close'); -} - -var select_catalog_record = function(event, ui) { - show_spinner(); - if ($( this ).select2('data').length > 0) { - var selected_name = $( this ).select2('data')[0].text; - } else { - var selected_name = ''; - } - var record_id = $( this ).val(); - if (record_id) { - populate_layer_fields_from_catalog_record(catalog_record_data, record_id, selected_name); - } else { - hide_spinner(); - } -} - -var populate_layer_fields_from_catalog_record = function(catalog_record_data, record_id, selected_name) { - selected_catalog_data = catalog_record_data.records[record_id]; - $('#id_catalog_id').val(record_id); - if ($('#id_name').val() == "") { - $('#id_name').val(selected_name); - } - - if (typeof populate_fields_from_catalog != "undefined" && typeof populate_fields_from_catalog === "function") { - populate_fields_from_catalog(catalog_record_data, record_id); - } - // if (window.confirm("Do you want to set all form fields from the selected catalog record?")) { - if (CATALOG_TECHNOLOGY == 'GeoPortal2') { - - } else { - hide_spinner(); - } - // } else { - // hide_spinner(); - // } - -} - -var union = function(array1, array2) { - var hash = {}, union_arr = []; - $.each($.merge($.merge([], array1), array2), function (index, value) { hash[value] = value; }); - $.each(hash, function (key, value) { union_arr.push(key); } ); - return union_arr; -} - -enforce_organization_show = function() { - var organization_section = $('.field-order.field-themes').parent(); - var metadata_section = $('.field-description').parent(); - - // This gets called before 'compressed' is applied to all sections by django admin's 'compress.js' - // So we need to wait a bit. - setTimeout(function() { - if (metadata_section.hasClass('collapsed')) { - organization_section.addClass('collapse') - organization_section.children('h2').html(organization_section.children('h2').html() + ' ( Hide )'); - show_layertype_form(null); - $('fieldset.collapse').addClass('late-transition'); - - } else { - enforce_organization_show(); - } - }, 200); -} - -assign_field_values_from_source_technology = function() { - if ($('#id_layer_type').val() == "ArcRest" || $('#id_layer_type').val() == "ArcFeatureServer") { - var url = $('#id_url').val(); - var export_index = url.toLowerCase().indexOf('/export'); - if ( export_index >= 0) { - url = url.substring(0, export_index); - } - if (url.toLowerCase().indexOf('/mapserver') >= 0 || url.toLowerCase().indexOf('/featureserver') >= 0) { - $.ajax({ - url: url + "/layers?f=json", - success: function(data) { - if (typeof data != "object") { - data = JSON.parse(data); - } - layers = []; - for (var i = 0; i < data.layers.length; i++) { - var layer = data.layers[i]; - if (layer.minScale) { - var minZoom = (Math.log(591657550.500000 /(layer.minScale/2))/Math.log(2)).toPrecision(3); - } else { - var minZoom = undefined; - } - if (layer.maxScale) { - var maxZoom = (Math.log(591657550.500000 /(layer.maxScale/2))/Math.log(2)).toPrecision(3); - } else { - var maxZoom = undefined; - } - layers.push({ - id:layer.id.toString(), - name: layer.name, - minZoom: minZoom, - maxZoom: maxZoom, - minResolution: layer.minScale, - maxResolution: layer.maxScale - }); - } - var layer_table_element = "
"; - for (var i = 0; i < layers.length; i++) { - layer = layers[i]; - var row = ""; - layer_table_element = layer_table_element + row; - } - layer_table_element = layer_table_element + "
IDNameLink
" + layer.id + "" + layer.name + "Details
"; - $('.arcgis-details-layer-table').remove(); - $('div.field-box.field-arcgis_layers').append(layer_table_element); - - var zoom_table_element = "
"; - for (var i = 0; i < layers.length; i++) { - layer = layers[i]; - var row = ""; - zoom_table_element = zoom_table_element + row; - } - zoom_table_element = zoom_table_element + "
IDNameMin ZoomMax Zoom
" + layer.id + "" + layer.name + "" + layer.minZoom + "" + layer.maxZoom + "
"; - $('.arcgis-zoom-layer-table').remove(); - $('div.field-box.field-minZoom').append(zoom_table_element); - - - } - }) - } - } -} - - -$(document).ready(function() { - - $('#spinner-dialog').dialog({autoOpen:false, modal: true, width: 150}); - - enforce_organization_show(); - - show_layertype_form($('#id_layer_type option:selected').text()); - - console.log("CATALOG_TECHNOLOGY: '" + CATALOG_TECHNOLOGY + "'"); - - // If catalog tech supported: - if (CATALOG_TECHNOLOGY != 'default') { - $('#id_catalog_id').height(15); - $('#id_catalog_id').prop('disabled', true); - $('#id_catalog_name').height(15); - // TODO: Query for catalog records - get_catalog_records(); - // - populate typeahead field with available catalog records - - // $('#id_catalog_id').autocomplete({ - // source: [ - // "Adam", "Becky", "Charlie", "Danielle" - // ] - // }); - - // - Filter records based on: - // - record has layer info - // - record not already in use - } else { - $('#id_catalog_id').hide(); - } - - - - $('#id_layer_type').change(function() { - show_layertype_form($('#id_layer_type option:selected').text()); - if (assign_field_values_from_source_technology && typeof assign_field_values_from_source_technology === "function") { - assign_field_values_from_source_technology(); - } - }); - - $('#id_url').blur(function() { - get_wms_capabilities(); - }); - - $('#id_wms_help').change(function() { - get_wms_capabilities(); - }); - - assign_field_values_from_source_technology(); - -}); +show_layertype_form = function(layertype) { + + if (layertype == null) { + layertype = $('#id_layer_type').val(); + } + + var url = $('#id_url').val(); + + if (url.length > 0) { + + if ($('#id_layer_type').val() == "WMS" && $('#id_wms_help').is(':checked')) { + get_wms_capabilities(); + } + + var organization_section = $('.field-order.field-themes').parent(); + var metadata_section = $('.field-description').parent(); + var legend_section = $('.field-show_legend').parent(); + var arcgis_section = $('.field-arcgis_layers').parent(); + var wms_section = $('.field-wms_help').parent(); + var attribute_section = $('.field-attribute_fields').parent(); + var style_section = $('.field-opacity').parent(); + var multi_association_section = $('#id_parent_layer-TOTAL_FORMS').parent(); + var multi_dimensions_section = $('#id_multilayerdimension_set-TOTAL_FORMS').parent(); + + switch(layertype) { + case '---------': + hide_section(arcgis_section); + hide_section(wms_section); + hide_section(style_section); + break; + case 'WMS': + hide_section(arcgis_section); + show_section(wms_section); + hide_section(style_section); + break; + case 'ArcRest': + show_section(arcgis_section); + hide_section(wms_section); + hide_section(style_section); + break; + case 'ArcFeatureServer': + show_section(arcgis_section); + hide_section(wms_section); + hide_section(style_section); + break; + case 'Vector': + hide_section(arcgis_section); + hide_section(wms_section); + show_section(style_section); + break; + case 'VectorTile': + hide_section(arcgis_section); + hide_section(wms_section); + show_section(style_section); + break; + default: + hide_section(arcgis_section); + hide_section(wms_section); + hide_section(style_section); + break; + } + } +} + +show_section = function(section) { + section.removeClass('collapsed'); + section.children('h2').children('a').text('Hide'); +} + +hide_section = function(section) { + section.addClass('collapsed'); + section.children('h2').children('a').text('Show'); +} + +get_wms_capabilities = function() { + if ($('#id_layer_type').val() == "WMS" && $('#id_url').length > 0 && $('#id_wms_help').prop('checked') == true) { + show_spinner(); + var url = $('#id_url').val(); + $.ajax({ + url: '/data_manager/wms_capabilities/', + data: { + url: url + }, + success: function(data) { + // SWITCH WMS INPUTS TO SELECTORS + var blank_option = ''; + + // Replace WMS Layer Name + var slug_val = $('#id_wms_slug').val(); + var layer_name_html = ''; + $('#id_wms_slug').replaceWith( layer_name_html); + if (data.layers.indexOf(slug_val) >= 0) { + $('#id_wms_slug').val(slug_val); + } + slug_val = $('#id_wms_slug').val(); + $('#id_wms_slug').change(function() { + get_wms_capabilities(); + }); + + // Set wms version (only 1.1.1 supported) + $('#id_wms_version').val(data.version); + $('.field-wms_version.field-box').hide() + + // Replace WMS Format + var format_val = $('#id_wms_format').val(); + var format_html = ''; + $('#id_wms_format').replaceWith(format_html); + if (data.formats.indexOf(format_val) >= 0) { + $('#id_wms_format').val(format_val); + } + + // Replace SRS + var srs_val = $('#id_wms_srs').val(); + var srs_html = ''; + $('#id_wms_srs').replaceWith(srs_html); + if (data.srs[slug_val].indexOf(srs_val) >= 0) { + $('#id_wms_srs').val(srs_val); + } + + $('#id_wms_srs').change(function() { + if ($('#id_wms_srs').val().toLowerCase() == 'epsg:3857') { + $('#id_wms_time_item').prop('disabled', true); + $('#id_wms_additional').prop('disabled', false); + } else { + $('#id_wms_time_item').prop('disabled', false); + $('#id_wms_additional').prop('disabled', true); + } + }); + + // Replace Styles + var style_keys = Object.keys(data.styles[slug_val]); + if (style_keys.length == 0) { + $('#id_wms_styles').val(null); + $('#id_wms_styles').prop('disabled', true); + } else { + $('#id_wms_styles').prop('disabled', false); + var style_val = $('#id_wms_styles').val(); + var style_html = ''; + $('#id_wms_styles').replaceWith(style_html); + if (Object.keys(data.styles[slug_val]).indexOf(style_val) >= 0) { + $('#id_wms_styles').val(style_val); + } + } + + // Replace Time + $('#wms_timing_default').remove(); + $('#wms_timing_position_label').remove(); + $('#wms_timing_position_options').remove(); + + if (data.time[slug_val].default == null) { + $('#id_wms_timing').val(null); + $('#id_wms_timing').prop('disabled', true); + } else { + $('#id_wms_timing').prop('disabled', false); + $('

*** Default = ' + data.time[slug_val].default + '***

').insertAfter('#id_wms_timing'); + if (data.time[slug_val].positions.length > 0) { + $('

Position options:

').insertAfter('#wms_timing_default'); + var wms_timing_positions_html = '
    '; + for (var i = 0; i < data.time[slug_val].positions.length; i++) { + wms_timing_positions_html += '
  • ' + data.time[slug_val].positions[i] + '
  • '; + } + wms_timing_positions_html += '
'; + $(wms_timing_positions_html).insertAfter('#wms_timing_position_label'); + } + } + + /* CAPABILITIES */ + if (Object.keys(data.capabilities).length > 0) { + var info_bool_field = $('#id_wms_info'); + var info_format_field = $('#id_wms_info_format'); + if (data.capabilities.hasOwnProperty('featureInfo') && data.capabilities.featureInfo.available) { + $('.form-row.field-wms_info.field-wms_info_format').show(); + info_format_field.prop('disabled', false); + info_bool_field.prop('disabled', false); + + var info_formats = data.capabilities.featureInfo.formats; + var info_format_val = info_format_field.val(); + var info_format_html = ''; + info_format_field.replaceWith(info_format_html); + + if (info_formats.indexOf(info_format_val) >= 0) { + $('#id_wms_info_format').val(info_format_val); + } + + } else { + // set featureInfo to false, hide section + info_bool_field.prop('checked', false); + info_bool_field.prop('disabled', true); + info_format_field.val(null); + info_format_field.prop('disabled', true); + $('.form-row.field-wms_info.field-wms_info_format').hide(); + } + } + check_queryable(data.queryable); + hide_spinner(); + }, + error: function(data) { + var url = $('#id_url').val(); + err_msg = 'ERROR: Layer url ' + url + ' does not appear to be a valid WMS endpoint.' + hide_spinner(); + window.alert(err_msg); + } + }); + } else { + // SWITCH SELECTORS TO INPUTS + + // Replace WMS Layer Name + if ($('#id_wms_slug').is('select')) { + var slug_val = $('#id_wms_slug').val(); + $('#id_wms_slug').replaceWith('' + + ''); + } + + // Release lock on WMS version field + $('.field-wms_version.field-box').show(); + + // Replace WMS format + if ($('#id_wms_format').is('select')) { + format_val = $('#id_wms_format').val(); + $('#id_wms_format').replaceWith('' + + ''); + } + + // Replace SRS + if ($('#id_wms_srs').is('select')) { + srs_val = $('#id_wms_srs').val(); + $('#id_wms_srs').replaceWith('' + + ''); + } + + $('#id_wms_srs').blur(function() { + if ($('#id_wms_srs').val() == 'EPSG:3857') { + $('#id_wms_time_item').prop('disabled', true); + $('#id_wms_additional').prop('disabled', false); + } else { + $('#id_wms_time_item').prop('disabled', false); + $('#id_wms_additional').prop('disabled', true); + } + }); + + // Replace Styles + if ($('#id_wms_styles').is('select')) { + style_val = $('#id_wms_styles').val(); + $('#id_wms_styles').replaceWith('' + + ''); + } + + // Replace Time + $('#id_wms_timing').prop('disabled', false); + $('#wms_timing_default').remove(); + $('#wms_timing_position_label').remove(); + $('#wms_timing_position_options').remove(); + + } +} + +check_queryable = function(queryable_layers) { + var selected_layer = $('#id_wms_slug').val(); + if (queryable_layers.indexOf(selected_layer) >= 0) { + $('#id_wms_info').attr('disabled', false); + $('#id_wms_info_format').attr('disabled', false); + } else { + $('#id_wms_info').attr('checked', false); + $('#id_wms_info').attr('disabled', true); + $('#id_wms_info_format').attr('disabled', true); + } + if (!$('#queryable_layer_list').length > 0) { + if ($('.form-row.field-wms_info.field-wms_info_format').length > 0) { + $('.form-row.field-wms_info.field-wms_info_format').append('
'); + } else { + console.log('need to re-write identification of WMS Info section of form. See layer_form.js "check_queryable()"'); + } + } + if ($('#queryable_layer_list').length > 0) { + q_layers_html = "Queryable Layers: " + queryable_layers.join(', '); + $('#queryable_layer_list').html(q_layers_html); + } +} + +var change_layer_url = function(self) { + var url = $(this).val(); + var type = null; + if (typeof(get_service_type) == "function") { + type = get_service_type(url); + if ($('#id_layer_type option').map(function() { return $(this).val(); }).toArray().indexOf(type) >= 0) { + $('#id_layer_type').val(type); + $('#id_layer_type').trigger('change'); + } + } else { + console.log('No get_service_type() function defined for CATALOG_TECHNOLOGY: ' + CATALOG_TECHNOLOGY); + } +} + +var replace_all_select2_with_input = function() { + var sel2_fields = $('.select2').siblings('select.select2-hidden-accessible').not('#id_catalog_name'); + for (var i = 0; i < sel2_fields.length; i++) { + var field_id = $(sel2_fields[i]).attr('id'); + var field_name = $(sel2_fields[i]).attr('name'); + var field_value = $(sel2_fields[i]).val(); + var textarea_fields = ['id_description']; + if (textarea_fields.indexOf(field_id) >= 0) { + var field_open = '