Trabajando con eldatasets.xmlArchivo
\[Esta página web sólo será de interésERDDAP™administradores.\]
Después de haber seguido elERDDAP™ Instrucciones de instalación, debe editar eldatasets.xmlarchivo en tomcat /content/erddap/ para describir los conjuntos de datos que suERDDAP™la instalación servirá.
Puedes ver un ejemplo.datasets.xmlen GitHub.
Introducción
Algunas Asambleas necesarias
Configuración de un conjunto de datosERDDAP™no es solo cuestión de apuntar al directorio o URL del conjunto de datos. Tienes que escribir un trozo de XML paradatasets.xmlque describe el conjunto de datos.
- Para conjuntos de datos redondeados, con el fin de que el conjunto de datos se ajuste aERDDAP's estructura de datos para datos redondeados, usted tiene que identificar un subconjunto de las variables del conjunto de datos que comparten las mismas dimensiones. (¿Por qué? ¿Cómo?)
- Los metadatos actuales del conjunto de datos se importan automáticamente. Pero si quieres modificar esos metadatos o añadir otros metadatos, tienes que especificarlo endatasets.xml. YERDDAP™necesidades de otros metadatos, incluidosatributos globales (tales comoinfoUrl, institución,sourceUrl, resumen y título) yatributos variables (tales comolong\_namey unidades) . Así como los metadatos que se encuentran actualmente en el conjunto de datos agregan información descriptiva al conjunto de datos, los metadatos solicitados porERDDAP™añade información descriptiva al conjunto de datos. Los metadatos adicionales son una buena adición a su conjunto de datos y ayudaERDDAP™hacer un mejor trabajo de presentar sus datos a los usuarios que no están familiarizados con él.
- ERDDAP™necesita que hagas cosas especiales conlongitud, latitud, altitud (o profundidad) , y variables de tiempo.
Si usted compra en estas ideas y gasta el esfuerzo para crear el XML paradatasets.xml, usted consigue todas las ventajas deERDDAP™, incluyendo:
- Búsqueda completa de texto para conjuntos de datos
- Buscar conjuntos de datos por categoría
- Formularios de acceso a datos ( datasetID HTML) para que pueda solicitar un subconjunto de datos en muchos formatos de archivo diferentes
- Formularios para solicitar gráficos y mapas ( datasetID .graph)
- Web Map Service (WMS) para conjuntos de datos redondeados
- RESTfulacceso a sus datos
Hacer eldatasets.xmltoma considerable esfuerzo para los primeros pocos datasets, pero se hace más fácil . Después del primer conjunto de datos, a menudo puede reutilizar mucho de su trabajo para el próximo conjunto de datos. Afortunadamente,ERDDAP™viene con dosHerramientaspara ayudarle a crear el XML para cada conjunto de datosdatasets.xml. Si te atascas, veamos nuestrasección sobre la obtención de apoyo adicional.
Proveedor de datos Formulario
Cuando un proveedor de datos viene a usted esperando añadir algunos datos a suERDDAP, puede ser difícil y consume mucho tiempo para recoger todos los metadatos (información sobre el conjunto de datos) necesario para agregar el conjunto de datosERDDAP. Muchas fuentes de datos (por ejemplo, archivos .csv, Archivos de Excel, bases de datos) no tienen metadatos internos, así queERDDAP™tiene un Formulario de Proveedor de Datos que reúne metadatos del proveedor de datos y da al proveedor de datos alguna otra orientación, incluyendo una amplia orientación paraDatos en bases de datos. La información presentada se convierte endatasets.xmlformato y luego correo electrónico alERDDAP™administrador (Tú) y escrito (apéndice) a bigParentDirectory /logs/dataProviderForm.log . Así, el formulario semiautomatiza el proceso de conseguir un conjunto de datos enERDDAP, pero elERDDAP™administrador todavía tiene que completar eldatasets.xmly tratar con obtener el archivo de datos (s) del proveedor o conectarse a la base de datos.
La presentación de archivos de datos reales de fuentes externas es un gran riesgo de seguridad, por lo queERDDAP™no trata de eso. Usted tiene que encontrar una solución que funciona para usted y el proveedor de datos, por ejemplo, correo electrónico (para pequeños archivos) , tire de la nube (por ejemplo, DropBox o Google Drive) , un sitio de sftp (con contraseñas) , o zapatilla Net (una unidad USB o disco duro externo) . Probablemente sólo deberías aceptar archivos de personas que conoces. Usted necesitará escanear los archivos para virus y tomar otras precauciones de seguridad.
No hay un enlace enERDDAP™al Formulario de Proveedor de Datos (por ejemplo, enERDDAP™página principal) . En su lugar, cuando alguien le dice que quieren que sus datos sean servidos por suERDDAP, puede enviarles un correo electrónico diciendo algo como: Sí, podemos conseguir sus datosERDDAP. Para empezar, rellena el formulario https://yourUrl/erddap/dataProviderForm.html (ohttp://sihttps://no está habilitado) . Después de que termines, te contactaré para conocer los detalles finales. Si sólo quieres mirar el formulario (sin llenarlo) , puedes ver el formulario enERD'sERDDAP:Introducción,Parte 1,Segunda parte,Parte 3, yParte 4. Estos enlaces sobreERD ERDDAP™envíame información a mí, no a ti, así que no envíes información con ellos a menos que realmente quieras agregar datos alERD ERDDAP.
Si desea eliminar el Formulario de Proveedor de Datos de suERDDAP™, poner
<dataProviderFormActive>false</dataProviderFormActive>
en su archivo setup.xml.
El impulso para esto fueNOAA2014Acceso público a resultados de investigación (PARR) Directiva, que requiere que todoNOAAdatos ambientales financiados a través de dólares de los contribuyentes se ponen a disposición mediante un servicio de datos (no sólo archivos) dentro de 12 meses de creación. Así que hay mayor interés en utilizarERDDAP™para poner los conjuntos de datos disponibles a través de un servicio ASAP. Necesitamos una manera más eficiente de tratar con un gran número de proveedores de datos.
¿Retroalimentación/Sugerencias? Este formulario es nuevo, así que por favor emailerd dot data at noaa dot govsi usted tiene algún comentario o sugerencias para mejorar esto.
Herramientas
ERDDAP™viene con dos programas de línea de comandos que son herramientas para ayudarle a crear el XML para cada conjunto de datos que desea suERDDAP™para servir. Una vez que hayas preparadoERDDAP™y ejecutarlo (al menos una vez) , usted puede encontrar y utilizar estos programas en tomcat /webapps/erddap/WEB-INF directory. Hay scripts Linux/Unix shell (con la extensión .sh) y scripts de Windows (con la extensión .bat) para cada programa.\[En Linux, ejecute estas herramientas como el mismo usuario (¿Tomcat?) que correrá Tomcat.\]Cuando ejecutas cada programa, te hará preguntas. Para cada pregunta, escriba una respuesta, luego presione Enter. O pulse ^C para salir de un programa en cualquier momento.
¿El programa no funcionará?
- Si tienes un programa desconocido (o similares) mensaje de error, el problema es probablemente que el sistema operativo no pudo encontrarJava. Tienes que averiguar dóndeJavaestá en su computadora, a continuación, editar la referencia java en el archivo .bat o .sh que está tratando de utilizar.
- Si usted consigue un archivo de tarro no encontrado o clase no se encontró mensaje de error, entoncesJavano podía encontrar una de las clases enumeradas en el archivo .bat o .sh que está tratando de utilizar. La solución es averiguar dónde está ese archivo .jar y editar la referencia de java en el archivo .bat o .sh.
- Si está usando una versión deJavaque es demasiado viejo para un programa, el programa no funcionará y verá un mensaje de error como
Excepción en hilo "main" java.lang.UnsupportedClassVersionError:
algunos/clase/nombre : Versión principal sin soporte algunosNúmero
La solución es actualizar a la versión más reciente deJavay asegúrese de que el archivo .sh o .bat para el programa lo está utilizando.
Las herramientas imprimen varios mensajes de diagnóstico:
- La palabra "ERROR" se utiliza cuando algo salió tan mal que el procedimiento no pudo completar. Aunque es molesto obtener un error, el error le obliga a lidiar con el problema.
- La palabra "WARNING" se utiliza cuando algo salió mal, pero el procedimiento fue capaz de ser completado. Son bastante raros.
- Cualquier otra cosa es sólo un mensaje informativo. Puede añadir \-verbose a laGenerarDatasetsXmloDasDdslínea de comandos para obtener mensajes informativos adicionales, que a veces ayuda a resolver problemas.
Las dos herramientas son una gran ayuda, pero todavía debe leer todas estas instrucciones en esta página cuidadosamente y tomar decisiones importantes usted mismo.
GenerarDatasetsXml
- GenerarDatasetsXml es un programa de línea de comandos que puede generar un borrador aproximado del XML de conjunto de datos para casi cualquier tipo de conjunto de datos.
We STRONGLY RECOMMEND that you use GenerateDatasets Xml en lugar de crear pedazos dedatasets.xmla mano porque:
- GenerarDatasets Xml trabaja en segundos. Hacer esto a mano es al menos una hora de trabajo, incluso cuando sabes lo que estás haciendo.
- GenerarDatasets Xml hace un mejor trabajo. Hacer esto a mano requiere un amplio conocimiento de cómoERDDAP™funciona. Es poco probable que usted hará un mejor trabajo a mano. (Bob Simons siempre usa GenerateDatasets Xml para el primer borrador, y escribióERDDAP.)
- GenerarDatasets Xml siempre genera un trozo válido dedatasets.xml. Cualquier pedazo dedatasets.xmlque escriba probablemente tendrá al menos algunos errores que prevenganERDDAP™desde la carga del conjunto de datos. A menudo toma horas para diagnosticar estos problemas. No pierdas tu tiempo. Let Generate Datasets Xml hace el trabajo duro. Entonces puedes refinar el .xml a mano si quieres.
Cuando usted utiliza el GenerarDatasets Programa Xml:
- En Windows, la primera vez que ejecuta GenerateDatasetsXml, necesita editar el archivo GenerateDatasetsXml.bat con un editor de texto para cambiar la ruta hacia la java. archivo exe para que Windows pueda encontrarJava.
- GenerarDatasets Xml primero le pide que especifique el EDDType (Erd Dap Dataset Tipo) del conjunto de datos. Ver elLista de tipos de conjunto de datos (en el presente documento) para averiguar cuál es el tipo apropiado para el conjunto de datos en el que está trabajando. Además de los EDDTypes regulares, también hay algunosTipos de conjunto de datos especiales/Pseudo (por ejemplo, uno que arrastra un catálogo de THREDDS para generar un pedazo dedatasets.xmlpara cada uno de los conjuntos de datos del catálogo) .
- GenerarDatasets Xml entonces le hace una serie de preguntas específicas a ese EDDType. Las preguntas reúnen la información necesaria paraERDDAP™para acceder a la fuente del conjunto de datos. Para entender quéERDDAP™está pidiendo, vea la documentación para el EDDType que especificó haciendo clic en el mismo tipo de conjunto de datos en elLista de tipos de conjunto de datos.
Si necesita introducir una cadena con caracteres especiales (por ejemplo, caracteres blancos al principio o al final, caracteres no ASCII) , entrar acuerda de estilo JSON (con caracteres especiales escaparon con caracteres \) . Por ejemplo, para introducir sólo un personaje de pestaña, introduzca "\t" (con las citas dobles circundantes, que dicenERDDAP™que esta es una cadena de estilo JSON.
- A menudo, una de sus respuestas no será lo que GeneraDatasetsXml necesita. Entonces puedes intentarlo de nuevo, con respuestas revisadas a las preguntas, hasta GenerateDatasets Xml puede encontrar y entender con éxito los datos fuente.
- Si responde correctamente a las preguntas (o lo suficientemente correcto) , GenerarDatasets Xml se conectará a la fuente del conjunto de datos y recopilará información básica (por ejemplo, nombres variables y metadatos) . Para conjuntos de datos que son de localesNetCDF .ncy archivos relacionados, GenerateDatasets Xml a menudo imprimirá la estructura similar al ncdump del archivo después de que primero lea el archivo. Esto puede darle información para responder mejor a las preguntas en un bucle posterior a través de GenerateDatasetsXml.
- GenerarDatasets Xml generará un borrador aproximado del XML de conjunto de datos para ese conjunto de datos.
- Se escribirá información diagnóstica y el borrador áspero del XML de conjunto de datos bigParentDirectory /logs/GenerateDatasetsXml.log .
- El borrador áspero del XML de conjunto de datos se escribirá para bigParentDirectory /logs/GenerateDatasetsXml.out .
"0 archivos" Mensaje de error
Si corres GenerateDatasets Xml oDasDds, o si intenta cargar unaEDDGridDesde...Files o EDDTableDesde... Dataset de archivos enERDDAP™, y recibe un mensaje de error de "0 archivos" indicando queERDDAP™encontrados 0 archivos coincidentes en el directorio (cuando usted piensa que hay archivos coincidentes en ese directorio) :
-
Compruebe que ha especificado el nombre completo del directorio. Y si especificó el nombre de archivo de la muestra, asegúrese de especificar el nombre completo del archivo, incluyendo el nombre completo del directorio.
-
Compruebe que los archivos realmente están en ese directorio.
-
Compruebe la ortografía del nombre del directorio.
-
Revisa el archivoNameRegex. Es realmente, muy f ácil cometer errores con regexes. Para fines de prueba, prueba el regex .\* que debe coincidir con todos los nombres de archivo. (Mira esto.documentación de regexyregex tutorial.)
-
Compruebe que el usuario que está ejecutando el programa (por ejemplo, user=tomcat (?) para Tomcat/ERDDAP) tiene permiso 'leer' para esos archivos.
-
En algunos sistemas operativos (por ejemplo, SELinux) y dependiendo de la configuración del sistema, el usuario que ejecutó el programa debe tener permiso 'leer' para toda la cadena de directorios que conducen al directorio que tiene los archivos.
-
Si tienes problemas que no puedes resolver,Solicitud de apoyocon la mayor información posible. De manera similar, si parece que el EDDType adecuado para un conjunto de datos dado no funciona con ese conjunto de datos, o si no hay EDDType adecuado, por favor, archiva unsobre GitHubcon los detalles (y un archivo de muestra si es relevante) .
Necesita editar la salida de GenerateDatasets Xml para mejorarlo.
-
DESCLAMADOR: EL CHUNK OFdatasets.xmlMADE BE GenerarDatasets Xml no es perfecto. Debes leer y grabar el XML antes de usarlo en una públicaERDDAP. GenerarDatasets Xml RELIES ON A LOT OF RULES-OF-THUMB WHICH AREN'T ALWAYS CORRECT. Usted es RESPONSABLE PARA AUMENTAR LA CORRECCIÓN DEL XML QUE AÑADIR AERDDAP'Sdatasets.xmlSilencio.
(No estoy gritando. Por razones legales históricas, los descargos deben ser escritos en todos los caps.)
La salida de GenerateDatasetsXml es un borrador duro. Casi siempre tendrás que editarlo. Hemos hecho y seguimos haciendo un gran esfuerzo para hacer que la salida sea lo más lista posible, pero hay límites. A menudo, la información necesaria simplemente no está disponible en los metadatos de origen.
Un problema fundamental es que estamos pidiendo un programa informático (GenerarDatasetsXml) para hacer una tarea donde, si le dieras la misma tarea a 100 personas, obtendrías 100 resultados diferentes. No hay una sola respuesta "derecha". Obviamente, el programa se acerca más a leer la mente de Bob (no tuyo) , pero aún así, no es un programa de IA todo-comprendido, sólo un montón de heurísticas adoquinaron juntos para hacer una tarea similar a IA. (Ese día de un programa de IA que todo lo entiende puede venir, pero aún no lo ha hecho. Si/cuando lo hace, los humanos podemos tener problemas mayores. Ten cuidado con lo que deseas.)
-
Para fines informativos, la salida muestra la fuente globalAtributos y fuente variableAtributos como comentarios.ERDDAP™combina fuenteAtributos yaddAttributes (que tienen precedencia) para hacer la combinación Atributos que se muestran al usuario. (Y otros atributos se añaden automáticamente a variables de longitud, latitud, altitud, profundidad y tiempo cuandoERDDAP™realmente hace el conjunto de datos) .
-
Si no te gusta una fuenteAtributo, sobreescribirla añadiendo una adiciónAtributo con el mismo nombre pero un valor diferente (o ningún valor, si quieres eliminarlo) .
-
Todo el mundoaddAttributesson sugerencias generadas por ordenador. ¡Mátalos! Si no te gusta un agregadoAttribute, cámbialo.
-
Si quieres añadir otroaddAttributes, agréguelos.
-
Si quieres cambiar undestinationNameCámbialo. Pero no cambiessourceNames.
-
Puedes cambiar el orden deldataVariables o eliminar cualquiera de ellos.
- Entonces puedes usarDasDds (véase infra) para probar repetidamente el XML para ese conjunto de datos para asegurar que el conjunto de datos resultante aparezca como desee.ERDDAP.
- Siéntete libre de hacer pequeños cambiosdatasets.xmlque se generó, por ejemplo, suministrar un mejorinfoUrl, resumen o título.
noAddStandardNames
Si incluye \-doNotAddStandardNames como parámetro de línea de comandos cuando se ejecuta genera Datasets Xml, genera Datasets Xml no añadirástandard\_namea laaddAttributespara cualquier variables distintas de variables llamadas latitud, longitud, altitud, profundidad o tiempo (que tienenstandard\_names) . Esto puede ser útil si está utilizando la salida de generar Datasets Xml directamente enERDDAP™sin editar la salida, porque genera Datasets Xml suele adivinarstandard\_nameincorrectamente. (Tenga en cuenta que siempre recomendamos que edite la salida antes de usarlo enERDDAP.) Usando este parámetro tendrá otros efectos relacionados menores porque el conjeturadostandard\_namea menudo se utiliza para otros fines, por ejemplo, para crear un nuevolong\_name, y para crear la configuración de colorBar.
Scripting
Como alternativa para responder las preguntas de forma interactiva en el teclado y bucle para generar conjuntos de datos adicionales, puede proporcionar argumentos de línea de comandos para responder a todas las preguntas para generar un conjunto de datos. GenerarDatasets Xml procesará esos parámetros, escribirá la salida al archivo de salida y saldrá del programa.
Para configurar esto, primero utilice el programa en modo interactivo y escriba sus respuestas. Aquí hay un ejemplo parcial: Digamos que ejecuta el script: ./GenerateDatasetsXml.sh Ingrese: EDDTableDesdeAsciiFiles Ingrese: /u00/data/ Entonces entra: Ingrese: /u00/data/sampleFile.asc A continuación, introduzca: ISO-8859-1
Para ejecutar esto de forma no interactiva, utilice esta línea de comandos: ./GenerateDatasetsXml.sh EDDTableDesdeAsciiFiles /u00/data/ .\*\.asc /u00/data/sampleFile.asc ISO-8859-1 Así que básicamente, sólo enumera todas las respuestas en la línea de comandos. Esto debe ser útil para conjuntos de datos que cambian con frecuencia de una manera que requiere re-correr GenerateDatasets Xml (notablementeEDDGridDeThreddsCatalog) .
Detalles:
- Si un parámetro contiene un espacio o algún personaje especial, codifica el parámetro como uncuerda de estilo JSON"Mi parámetro con espacios y dos\nlíneas".
- Si desea especificar una cadena vacía como parámetro, use: nada
- Si desea especificar el valor predeterminado de un parámetro, use: default
- GenerarDatasets Xml soporta a -i conjuntos de datos XmlName # tagName parámetro línea de comandos que inserta la salida en el parámetro especificadodatasets.xmlarchivo (el default tomcat /content/erddap/datasets.xml) . GenerarDatasets Xml busca dos líneas en conjuntos de datos XmlName:
<!-- Begin GenerateDatasetsXml #*tagName someDatetime* -->
y
<!-- End GenerateDatasetsXml #*tagName someDatetime* -->
y reemplaza todo entre esas líneas con el nuevo contenido, y cambia el tiempo de destino.
- El interruptor -i solo se procesa (y cambios endatasets.xmlsólo se hacen) si corres GenerateDatasets Xml con argumentos de línea de comandos que especifican todas las respuestas a todas las preguntas para un bucle del programa. (Ver 'Scripting' arriba.) (El pensamiento es: Este parámetro es para uso con scripts. Si utiliza el programa en modo interactivo (escribiendo información sobre el teclado) , es probable que genere algunos fragmentos incorrectos de XML antes de generar el que desee.)
- Si no se encuentran las líneas de Inicio y Fin, entonces esas líneas y el nuevo contenido se insertan justo antes</erddapDatasets confiar.
- También hay un -I (capital i) interruptor para propósitos de prueba que funciona igual que -i, pero crea un archivo llamadodatasets.xml Fecha y no hace cambios adatasets.xml.
- No corras GenerateDatasets Xml con -i en dos procesos a la vez. Hay una posibilidad de que sólo se mantenga un conjunto de cambios. Puede haber problemas graves. (por ejemplo, archivos dañados) .
Si utiliza "GenerateDatasetsXml -verbose", imprimirá más mensajes de diagnóstico de lo habitual.
Tipos de conjunto de datos especiales/Pseudo
En general, las opciones EDDType en GenerateDatasets Xml match of the EDD types described in this document (ver elLista de tipos de conjunto de datos) y generar unodatasets.xmlpara crear un conjunto de datos de una fuente de datos específica. Existen algunas excepciones y casos especiales:
EDDGridFromErddap
Este EDDType genera todo eldatasets.xmlpedazos necesarios para hacerEDDGridFromErddapconjuntos de datos de todos losEDDGriddatasets in a remoteERDDAP. Usted tendrá la opción de mantener el originaldatasetIDs (que puede duplicar algunosdatasetIDya en tuERDDAP) o generando nuevos nombres que serán únicos (pero generalmente no son tan legibles por el ser humano) .
EDDTableDeErddap
Este EDDType genera todo eldatasets.xmlpedazos necesarios para hacerEDDTableDeErddapconjuntos de datos de todos los conjuntos de datos EDDTable en un remotoERDDAP. Usted tendrá la opción de mantener el originaldatasetIDs (que puede duplicar algunosdatasetIDya en tuERDDAP) o generando nuevos nombres que serán únicos (pero generalmente no son tan legibles por el ser humano) .
EDDGridDeThreddsCatalog
Este EDDType genera todo eldatasets.xmlpedazos necesarios para todos losEDDGridDeDapconjuntos de datos que puede encontrar arrastrando recursivamente a través de un THREDDS (sub) catálogo. Hay muchas formas de URLs del catálogo de THREDDS. Esta opción requiere una URL de THREDDS .xml con /catalog/ en ella, por ejemplo,
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/catalog.xml o
https://oceanwatch.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/chla/catalog.xml
(a related .html catalog is at
https://oceanwatch.pfeg.noaa.gov/thredds/Satellite/aggregsatMH/chla/catalog.html , que no es aceptable paraEDDGridDeThreddsCatalog).
Si tienes problemas conEDDGridDeThredds Catálogo:
- Asegúrese de que la URL que está utilizando es válida, incluye /catalog/, y termina con /catalog.xml .
- Si es posible, utilice una dirección IP pública (por ejemplo, https://oceanwatch.pfeg.noaa.gov ) en la URL, no una dirección IP numérica local (por ejemplo, https://12.34.56.78 ) . Si los THREDDS sólo son accesibles a través de la dirección IP numérica local, puede utilizar [<convertToPublicSourceUrl] (#converttopublicsourceurl) Así que...ERDDAP™los usuarios ven la dirección pública, aunqueERDDAP™obtiene datos de la dirección numérica local.
- Si tienes problemas que no puedes resolver,comprobar los consejos de solución de problemas.
- El código de bajo nivel para esto ahora utiliza elUnidatanetcdf-java catálogo gateer code (Tredds. Clases de catálogo) para que pueda manejar todos los catálogos de THREDDS (que puede ser sorprendentemente complejo) GraciasUnidatapara ese código.
EDDGridLonPM180DesdeErddapCatalog
Este EDDType genera eldatasets.xmlpara hacerEDDGridLonPM180conjuntos de datos de todos losEDDGriddatasets in anERDDAPque tienen valores de longitud superiores a 180.
- Si es posible, utilice una dirección IP pública (por ejemplo, https://oceanwatch.pfeg.noaa.gov ) en la URL, no una dirección IP numérica local (por ejemplo, https://12.34.56.78 ) . SiERDDAP™sólo es accesible a través de la dirección IP numérica local, puede utilizar [<convertToPublicSourceUrl] (#converttopublicsourceurl) Así que...ERDDAP™los usuarios ven la dirección pública, aunqueERDDAP™obtiene datos de la dirección numérica local.
EDDGridLon0360DesdeErddapCatalog
Este EDDType genera eldatasets.xmlpara hacerEDDGridLon0360conjuntos de datos de todos losEDDGriddatasets in anERDDAPque tienen valores de longitud inferiores a 0.
- Si es posible, utilice una dirección IP pública (por ejemplo, https://oceanwatch.pfeg.noaa.gov ) en la URL, no una dirección IP numérica local (por ejemplo, https://12.34.56.78 ) . SiERDDAP™sólo es accesible a través de la dirección IP numérica local, puede utilizar [<convertToPublicSourceUrl] (#converttopublicsourceurl) Así que...ERDDAP™los usuarios ven la dirección pública, aunqueERDDAP™obtiene datos de la dirección numérica local.
EDDsDeFiles
Dado un directorio inicial, esto atraviesa el directorio y todos los subdirectorios y trata de crear un conjunto de datos para cada grupo de archivos de datos que encuentra.
- Esto supone que cuando se encuentra un conjunto de datos, el conjunto de datos incluye todos los subdirectorios.
- Si se encuentra un conjunto de datos, directorios similares de hermanos serán tratados como conjuntos de datos separados (por ejemplo, los directorios para los años noventa, los 2000, los 2010's, generarán conjuntos de datos separados) . Deberían ser fáciles de combinar a mano -- simplemente cambiar el primer conjunto de datos<fileDir contacto con el directorio padre y eliminar todos los conjuntos de datos de hermanos posteriores.
- Esto sólo tratará de generar un pedazo dedatasets.xmlpara el tipo más común de extensión de archivo en un directorio (no cuenta .md5, que se ignora) . Así que, dado un directorio con 10.ncarchivos y 5 .txt archivos, se generará un conjunto de datos para el.ncSólo archivos.
- Esto supone que todos los archivos en un directorio con la misma extensión pertenecen al mismo conjunto de datos. Si un directorio tiene algunos.ncarchivos con datos SST y algunos.ncarchivos con datos de clorofila, solo una muestra.ncarchivo será leído (¿SST? ¿Clorofila?) y sólo se creará un conjunto de datos para ese tipo de archivo. Ese conjunto de datos probablemente no se cargará debido a las complicaciones de intentar cargar dos tipos de archivos en el mismo conjunto de datos.
- Si hay menos de 4 archivos con la extensión más común en un directorio, esto supone que no son archivos de datos y simplemente salta el directorio.
- Si hay 4 o más archivos en un directorio, pero esto no puede generar con éxitodatasets.xmlpara los archivos (por ejemplo, un tipo de archivo sin soporte) , esto generará unEDDTableDesdeFileNamesDataset para los archivos.
- Al final del diagnóstico que esto escribe al archivo de registro, justo antes deldatasets.xmlpedazos, esto imprimirá una tabla con un resumen de la información reunida por el rastreo de todos los subdirectorios. La tabla enumerará cada subdirectorio e indicará el tipo más común de extensión de archivo, el número total de archivos, y qué tipo de conjunto de datos se creó para estos archivos (si) . Si te enfrentas a una estructura de archivos compleja y profundamente anidada, considera correr GenerateDatasets Xml con EDDType=EDDsDeFiles sólo para generar esta información,
- Esta opción puede no hacer un gran trabajo de adivinar el mejor EDDType para un grupo dado de archivos de datos, pero es rápido, fácil y vale la pena intentarlo. Si los archivos fuente son adecuados, funciona bien y es un buen primer paso en generar eldatasets.xmlpara un sistema de archivos con un montón de subdirectorios, cada uno con archivos de datos de diferentes conjuntos de datos.
EDDTableDeEML y EDDTableDeEMLBatch
Este EDDType especial genera eldatasets.xmlpara hacer unaEDDTableDesde el aeropuertodataset de cada una de las tablas descritasEcological Metadata LanguageArchivo XML. La variante "Batch" funciona en todos los archivos EML en un directorio local o remoto. Por favor, vea el separadodocumentación para EDDTableDesdeEML.
EDDTableDesde InPort
Este EDDType especial genera eldatasets.xmlpara hacer unaEDDTableDesde el aeropuertodataset desde la información en uninport-xmlarchivo. Si puede acceder al archivo de datos fuente (el archivo inport-xml debe tener pistas para dónde encontrarlo) , puede hacer un conjunto de datos de trabajo enERDDAP.
Los siguientes pasos describen cómo utilizar GenerateDatasets Xml con un archivo inport-xml para obtener un conjunto de datos de trabajo enERDDAP.
- Una vez que tenga acceso al archivo inport-xml (ya sea como una URL o un archivo local) : ejecutar GenerateDatasets Xml, especifique EDDType=EDDTableDesdeInPort, especifique la URL inport-xml o nombre completo de archivo, especifique quéChild=0, y especifique la otra información solicitada (si se sabe) . (En este punto, usted no necesita tener el archivo de datos fuente o especificar su nombre.) El ajuste queChild=0 dice GenerarDatasets Xml para escribir la información para Todos de la<entidad-atributo-información<en el archivo inport-xml (si hay alguna) . También imprime un resumen de información de antecedentes, incluyendo todos los datos de descarga listados en el archivo inport-xml.
- Mira toda esa información (incluyendo la información de fondo que GeneraDatasets Impresión Xml) y visitar la descarga-url (s) para tratar de encontrar el archivo de datos fuente (s) . Si puedes encontrarlo (ellos) , descargarlo (ellos) en un directorio que es accesibleERDDAP. (Si no puede encontrar ningún archivo de datos fuente, no hay punto en proceder.)
- Run Generate Datasets Otra vez Xml. Si el archivo de datos fuente corresponde a uno del archivo inport-xml<entidad-atributo-información<entidad título, especificar qué niño= queEntity'sNumber (por ejemplo, 1, 2, 3, ...) .ERDDAP™intentará igualar los nombres de las columnas en el archivo de datos fuente a los nombres de la información de la entidad, y pedirá que acepte/rechate/fijo cualquier discrepancia. O, si el archivo inport-xml no tiene ninguna<entidad-atributo-información<entidad título, especifique qué niño=0.
- En el pedazo dedatasets.xmlque fue hecho por GenerateDatasets Xml, revisa el [global]<addAttributes> (#global-atributos) según sea necesario o deseado.
- En el pedazo dedatasets.xmlque fue hecho por GenerateDatasetsXml, añadir/revise el [<dataVariable> (#datavariable) información según sea necesario o deseada para describir cada una de las variables. Asegúrese de identificar correctamente cada variable [<sourceName> (#sourcename) (como aparece en la fuente) , [<destinationName> (#Destino) (que tiene más limitaciones en caracteres permitidos quesourceName) , [<unidades] (#unidades) (especialmente si es untiempo o temporizador variabledonde las unidades necesitan especificar el formato) , y [<missing\_value> (#missing_value) ,
- Cuando estés cerca de terminar, usa repetidamente elDasDdsherramienta para ver rápidamente si la descripción del conjunto de datos es válida y si el conjunto de datos aparecerá enERDDAP™como quieras.
Sería genial si los grupos que utilizan InPort para documentar sus conjuntos de datos también utilizaranERDDAP™para poner los datos efectivos disponibles:
- ERDDAP™es una solución que se puede utilizar ahora mismo para que pueda cumplirNOAA'sAcceso público a resultados de investigación (PARR) necesidadesahora mismo, no en un momento vago en el futuro.
- ERDDAP™hace que los datos reales estén disponibles para los usuarios, no sólo los metadatos. (¿Qué bien son los metadatos sin datos?)
- ERDDAP™soporta metadatos (en particular, las unidades de variables) , a diferencia de otros software del servidor de datos que se están considerando. (¿Qué bien son los datos sin metadatos?) Utilizar software que no admite metadatos es invitar a los datos a ser malinterpretados y mal utilizados.
- ERDDAP™es software libre y de código abierto a diferencia de otros software que se están considerando. Desarrollo permanenteERDDAP™ya está pagado. ApoyoERDDAP™Los usuarios son libres.
- ERDDAP's apariencia se puede personalizar fácilmente para reflejar y resaltar su grupo (noERDoERDDAP) .
- ERDDAP™ofrece una manera consistente de acceder a todos los conjuntos de datos.
- ERDDAP™puede leer datos de muchos tipos de archivos de datos y de bases de datos relacionales.
- ERDDAP™puede tratar con grandes conjuntos de datos, incluyendo conjuntos de datos donde los datos de la fuente están en muchos archivos de datos.
- ERDDAP™puede escribir datos a muchos tipos de archivos de datos, a petición del usuario, incluyendo tipos de archivos de datos científicos como netCDF, ESRI .csv, yODV .txt.
- ERDDAP™puede hacer gráficos y mapas personalizados de subconjuntos de los datos, basados en las especificaciones del usuario.
- ERDDAP™puede tratar con conjuntos de datos no data, como colecciones de archivos de imagen, vídeo o audio.
- ERDDAP™ha sido instalado y utilizado enmás de 60 instituciones en todo el mundo.
- ERDDAP™se enumera como uno de los servidores de datos recomendados para uso dentroNOAAen elNOAAData Access Procedural Directive, a diferencia de que se está considerando otro software.
- ERDDAP™es un producto deNMFS/NOAA, así que utilizarlo dentroNMFSyNOAAdebe ser un punto de orgullo paraNMFSyNOAA.
Por favor.ERDDAP™un intento. Si necesita ayuda, por favor envíe un mensaje en elERDDAP™Grupo de Google.
addFillValueAttributes
Esta opción especial EDDType no es un tipo de conjunto de datos. Es una herramienta que puede añadir atributos \_FillValue a algunas variables en algunos conjuntos de datos. SeeaddFillValueAttributes.
encontrarDuplicar Hora
Esta opción especial EDDType no es un tipo de conjunto de datos. En lugar de eso, dice GenerarDatasets Xml para buscar a través de una colección de rejillas.nc (y conexas) archivos para encontrar e imprimir una lista de archivos con valores de tiempo duplicados. Cuando mira los valores de tiempo, los convierte de las unidades originales a"seconds since 1970-01-01"en caso de que diferentes archivos usen diferentes cadenas de unidades. Necesitas proporcionar el directorio inicial (con o sin la barra de seguimiento) , el nombre del archivo expresión regular (por ejemplo,.nc ) , y el nombre de la variable de tiempo en los archivos.
ncdump
Esta opción especial EDDType no es un tipo de conjunto de datos. En lugar de eso, dice GenerarDatasets Xml para imprimirncdump\-como impresión de una.nc,.ncml o.hdfarchivo. En realidad utiliza el netcdf-javaNCdump, que es una herramienta más limitada que la versión C de NCdump. Si utiliza esta opción, GenerateDatasetsXml le pedirá que utilice una de las opciones: "-h" (header) , "c" (coordenadas) , "vall" (por defecto) , "-v var1;var2", "-v var1 (0,010,0:20) ". Esto es útil porque, sin ncdump, es difícil saber lo que hay en un.nc,.ncml o.hdfarchivo y por lo tanto qué EDDType debe especificar para GenerateDatasets Xml. Para un.ncarchivo ml, esto imprimirá la salida ncdump para el resultado del.nccambios de archivo de ml aplicados a la.nco.hdfarchivo.
DasDds
- DasDds es un programa de línea de comandos que puede utilizar después de haber creado un primer intento en el XML para un nuevo conjunto de datos endatasets.xml. Con DasDds, puede probar y perfeccionar repetidamente el XML. Cuando utiliza el programa DasDds:
- En Windows, la primera vez que ejecuta DasDds, necesita editar los DasDds. archivo de murciélago con un editor de texto para cambiar la ruta hacia el java. archivo exe para que Windows pueda encontrarJava.
- DasDds te pregunta por eldatasetIDpara el conjunto de datos en el que está trabajando.
- DasDds intenta crear el conjunto de datos con esodatasetID.
- DasDds siempre imprime muchos mensajes de diagnóstico. Si utiliza "DasDds -verbose", DasDds imprimirá más mensajes de diagnóstico de lo habitual.
- Para seguridad, DasDds siempre elimina toda la información de conjunto de datos caché (archivos) para el conjunto de datos antes de intentar crear el conjunto de datos. Este es el equivalente de establecer unbandera duraAsí que para conjuntos de datos agregados, es posible que desee ajustar el archivoNameRegex temporalmente para limitar el número de archivos que el constructor de datos encuentra.
- Si el conjunto de datos no se carga (por cualquier razón) , DasDds parará y le mostrará el mensaje de error para el primer error que encuentra.
No intentes adivinar cuál es el problema. Lea cuidadosamente el mensaje ERROR.
Si es necesario, lea los mensajes diagnósticos anteriores para encontrar más pistas e información, también. - Haga un cambio en el XML del conjunto de datos para tratar de resolver ese problema
y dejar que DasDds trate de crear el conjunto de datos de nuevo. - Si repetidamente resuelves cada problema, eventualmente resolverás todos los problemas
y el conjunto de datos se cargará.
- Todos los DasDds salida (diagnóstico y resultados) están escritos a la pantalla y a bigParentDirectory /logs/DasDds.log .
- Si DasDds puede crear el conjunto de datos, DasDds le mostrará el.das (Dataset Attribute Structure) ,.dds (Descriptor de Dataset Estructura) , y.timeGaps (deficiencias del tiempo) información para el conjunto de datos en su pantalla y escríbalos a bigParentDirectory /logs/DasDds.out .
- A menudo, usted querrá hacer un pequeño cambio en el XML del conjunto de datos para limpiar los metadatos del conjunto de datos y recorar DasDds.
Bono Third-Party Tool:ERDDAP- No.
ERDDAP-lint es un programa de Rob Fuller y Adam Leadbetter del Instituto Marino Irlandés que usted puede utilizar para mejorar los metadatos de suERDDAP™Datasets.ERDDAP-incluye "contiene reglas y una simple aplicación web estática para realizar algunas pruebas de verificación contra suERDDAP™servidor. Todas las pruebas se ejecutan en el navegador web." Como elHerramienta Unix/Linux lint, puede editar las reglas existentes o añadir nuevas reglas. SeeERDDAP- No.para más información.
Esta herramienta es especialmente útil para conjuntos de datos que creaste hace algún tiempo y ahora quieres actualizar tus preferencias de metadatos actuales. Por ejemplo, versiones tempranas de GenerateDatasets Xml no puso ningún esfuerzo en crear globalcreator\_name,creator\_email, creador\_tipo, ocreator\_urlmetadatos. Podrías usarERDDAP- Insinúa identificar los conjuntos de datos que carecen de esos atributos de metadatos.
Gracias a Rob y Adam por crear esta herramienta y ponerla a disposición de laERDDAP™comunidad.
La estructura básica de ladatasets.xmlArchivo
Las etiquetas requeridas y opcionales permitidas en undatasets.xmlarchivo (y el número de veces que pueden aparecer) se muestran a continuación. En la práctica, tudatasets.xmltendrá muchos<etiquetas de dataset iconos y sólo utilizar las otras etiquetas dentro<erddapDatasets confiar según sea necesario.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<erddapDatasets>
<angularDegreeUnits>...</angularDegreeUnits> <!-- 0 or 1 -->
<angularDegreeTrueUnits>...</angularDegreeTrueUnits> <!-- 0 or 1 -->
<cacheMinutes>...</cacheMinutes> <!-- 0 or 1 -->
<commonStandardNames>...</commonStandardNames> <!-- 0 or 1 -->
<convertInterpolateRequestCSVExample /> <!-- 0 or more -->
<convertInterpolateDatasetIDVariableList /> <!-- 0 or more -->
<convertToPublicSourceUrl /> <!-- 0 or more -->
<decompressedCacheMaxGB>...</decompressedCacheMaxGB> <!-- 0 or 1 -->
<decompressedCacheMaxMinutesOld>...</decompressedCacheMaxMinutesOld> <!-- 0 or 1 -->
<drawLandMask>...</drawLandMask> <!-- 0 or 1 -->
<emailDiagnosticsToErdData>...</emailDiagnosticsToErdData> <!-- 0 or 1 -->
<graphBackgroundColor>...</graphBackgroundColor> <!-- 0 or 1 -->
<ipAddressMaxRequests>...</ipAddressMaxRequests> <!-- 0 or 1 -->
<ipAddressMaxRequestsActive>...<ipAddressMaxRequestsActive> <!-- 0 or 1 -->
<ipAddressUnlimited>...<ipAddressUnlimited> <!-- 0 or 1 -->
<loadDatasetsMinMinutes>...</loadDatasetsMinMinutes> <!-- 0 or 1 -->
<loadDatasetsMaxMinutes>...</loadDatasetsMaxMinutes> <!-- 0 or 1 -->
<logLevel>...</logLevel> <!-- 0 or 1 -->
<nGridThreads>...</nGridThreads> <!-- 0 or 1 -->
<nTableThreads>...</nTableThreads> <!-- 0 or 1 -->
<palettes>...</palettes> <!-- 0 or 1 -->
<partialRequestMaxBytes>...</partialRequestMaxBytes> <!-- 0 or 1 -->
<partialRequestMaxCells>...</partialRequestMaxCells> <!-- 0 or 1 -->
<requestBlacklist>...</requestBlacklist> <!-- 0 or 1 -->
<slowDownTroubleMillis>...</slowDownTroubleMillis> <!-- 0 or 1 -->
<subscriptionEmailBlacklist>...</subscriptionEmailBlacklist> <!-- 0 or 1 -->
<unusualActivity>...</unusualActivity> <!-- 0 or 1 -->
<updateMaxEvents>...</updateMaxEvents> <!-- 0 or 1 --><standardLicense>...</standardLicense> <!-- 0 or 1 -->
<standardContact>...</standardContact> <!-- 0 or 1 -->
<standardDataLicenses>...</standardDataLicenses> <!-- 0 or 1 -->
<standardDisclaimerOfEndorsement>...</standardDisclaimerOfEndorsement> <!-- 0 or 1 -->
<standardDisclaimerOfExternalLinks>...</standardDisclaimerOfExternalLinks> <!-- 0 or 1 -->
<standardGeneralDisclaimer>...</standardGeneralDisclaimer> <!-- 0 or 1 -->
<standardPrivacyPolicy>...</standardPrivacyPolicy> <!-- 0 or 1 -->
<startHeadHtml5>...</startHeadHtml5> <!-- 0 or 1 -->
<startBodyHtml5>...</startBodyHtml5> <!-- 0 or 1 -->
<theShortDescriptionHtml>...</theShortDescriptionHtml> <!-- 0 or 1 -->
<endBodyHtml5>...</endBodyHtml5> <!-- 0 or 1 --><user username="..." password="..." roles="..." /> <!-- 0 or more -->
<dataset>...</dataset> <!-- 1 or more -->
</erddapDatasets>
Es posible que otras codificación se permitan en el futuro, pero por ahora sólo se recomienda ISO-8859-1.
XInclude
Nuevo en la versión 2.25 es soporte para XInclude. Esto requiere que usted está usando el parser SAX<useSaxParser</useSaxParser confianza en su setup.xml. Esto puede permitirle escribir cada conjunto de datos en su propio archivo, luego incluirlos todos en el principaldatasets.xml, reutilizar partes de las definiciones de conjunto de datos, o ambas. Si quieres ver un ejemplo,EDDTestDataset.javaestablece XInclude para reutilizar las definiciones variables.
Notas
Trabajando con eldatasets.xmlarchivo es un proyecto no-trivial. Por favor lea atentamente todas estas notas. Después de elegir unTipo de dataset, por favor lea la descripción detallada de ella cuidadosamente.
Elegir el tipo Dataset
En la mayoría de los casos, sólo hay unoERDDAP™tipo de conjunto de datos que es apropiado para una fuente de datos determinada. En algunos casos (por ejemplo,.ncarchivos) , hay algunas posibilidades, pero generalmente uno de ellos es definitivamente mejor. La primera y mayor decisión que debe tomar es: es apropiado tratar el conjunto de datos como un grupo de arrays multidimensionales (si es así verEDDGridtipos de conjunto de datos) o como un cuadro de datos similar a la base de datos (si es así verTipos de conjunto de datos) .
Servir los datos como es
Por lo general, no hay necesidad de modificar la fuente de datos (por ejemplo, convertir los archivos a otro tipo de archivo) asíERDDAP™puede servirlo. Una de las hipótesis deERDDAP™es que la fuente de datos se utilizará como es. Normalmente esto funciona bien. Algunas excepciones son:
- Bases de datos relacionales y Cassandra --ERDDAP™puede servir datos directamente desde bases de datos relacionales y Cassandra. Pero para cuestiones de seguridad, equilibrio de carga y rendimiento, puede optar por configurar otra base de datos con los mismos datos o guardar los datos paraNetCDFv3.ncarchivos y tienenERDDAP™servir los datos de la nueva fuente de datos. SeeEDDTableDesde la base de datosyEDDTableDesdeCassandra.
- Fuentes de datos no respaldadas --ERDDAP™puede soportar un gran número de fuentes de datos, pero el mundo está lleno de 1000 (¿En millones?) de diferentes fuentes de datos (notablemente, estructuras de archivos de datos) . SiERDDAP™no soporta su fuente de datos:
- Si la fuente de datos esNetCDF .ncarchivos, puede utilizarNcMLpara modificar los archivos de datos sobre la marcha, o utilizarNCOpara modificar permanentemente los archivos de datos.
- Puede escribir los datos a un tipo de fuente de datos queERDDAP™soportes.NetCDF-3.ncarchivos son una buena, recomendación general porque son archivos binarios queERDDAP™puede leer muy rápidamente. Para datos tabulares, considere almacenar los datos en una colección de.ncarchivos que utilizanCF Geometrías de muestreo discretos (DSG) Contiguous Ragged Array estructuras de datos y así se puede manejar conERDDAP'sEDDTableDesdeNcCFFiles). Si se organizan lógicamente (cada uno con datos para un trozo de espacio y tiempo) ,ERDDAP™puede extraer datos de ellos muy rápidamente.
- Puede solicitar que se añada soporte para esa fuente de datosERDDAP™por correo electrónico a Chris. John en Noaa.gov.
- Puede agregar soporte para esa fuente de datos escribiendo el código para manejarlo usted mismo. SeeelERDDAP™Guía del programador
- Velocidad...ERDDAP™puede leer datos de algunas fuentes de datos mucho más rápido que otros. Por ejemplo, la lecturaNetCDFv3.ncarchivos es rápido y leer archivos ASCII es más lento. Y si hay un gran (■1000) o enorme (√10,000) número de archivos de datos de origen,ERDDAP™responderá a algunas solicitudes de datos lentamente. Normalmente, la diferencia no es perceptible para los humanos. Sin embargo, si piensasERDDAP™es lento para un conjunto de datos dado, puede elegir resolver el problema escribiendo los datos a una configuración más eficiente (generalmente: unos pocos, bien estructurados,NetCDFv3.ncarchivos) . Para datos tabulares, consulteeste consejo.
Hint
A menudo es más fácil generar el XML para un conjunto de datos haciendo una copia de una descripción de conjunto de datos de trabajo en dataset.xml y luego modificarlo.
Codificación de caracteres especiales
Desdedatasets.xmles un archivo XML, debes" código"Tío"<", y "conejo" en cualquier contenido como "pacamp", "<", y "condenado". Incorrecto:<título Tiempo " mareas</title Bien.<título Tiempo y mareas</title
XML no tolera errores de sintaxis
Después de editar el archivo dataset.xml, es una buena idea verificar que el resultado esXML bien formadopegando el texto XML en un chequeador XML comoxmlvalidación.
Consejos de solución de problemas
- Otras maneras de diagnosticar problemas con los conjuntos de datos
Además de los dos principalesHerramientas, - log.txtes un archivo de registro con todoERDDAPEs mensajes de diagnóstico.
- ElDaily Reporttiene más información que la página de estado, incluyendo una lista de conjuntos de datos que no cargaron y las excepciones (errores) generaron.
- ElPáginaes una manera rápida de comprobarERDDAP's estado de cualquier navegador web. Incluye una lista de conjuntos de datos que no cargaron (aunque no las excepciones conexas) y la tarea (mostrando el progresoEDDGridCopiadoyEDDTableCopyconjuntos de datos y cualquierEDDGridDeFilesoEDDTableDeFilesconjuntos de datos que utilizancacheDesde el aeropuerto (pero no cache SizeGB) ) .
- Si te atascas, veamos nuestrasección sobre la obtención de apoyo adicional.
Variables especiales
- La longitud, latitud, altitud (o profundidad) , y tiempo (LLAT) variable destinationNames son especiales.
- En general:
- Las variables LLAT se hacen conocidasERDDAP™si la variable del eje (paraEDDGridconjuntos de datos) o variable de datos (para conjuntos de datos EDDTable) destinationNamees "longitud", "latitud", "altitud", " profundidad", o"time".
- Le animamos firmemente a utilizar estos nombres estándar para estas variables siempre que sea posible. Ninguno de ellos es requerido. Si no usa estos nombres de variables especiales,ERDDAP™No reconocerá su significado. Por ejemplo, las variables LLAT son tratadas especialmente por Make A Graph ( datasetID .graph) : si la variable X Axis es "longitud" y la variable Y Axis es "latitud", obtendrás un mapa (usando una proyección estándar, y con una máscara de tierra, límites políticos, etc.) en lugar de un gráfico.
- ERDDAP™añadirá automáticamente un montón de metadatos a variables LLAT (por ejemplo, "ioos\_category", "unidades", y varios atributos relacionados con estándares como "\_CoordinateAxisType") .
- ERDDAP™añadirá automáticamente muchos metadatos globales relacionados con los valores LLAT del subconjunto de datos seleccionado (por ejemplo, "geospacial\_lon\_min") .
- Los clientes que apoyen estos estándares de metadatos podrán aprovechar los metadatos añadidos para posicionar los datos en tiempo y espacio.
- Los clientes encontrarán más fácil generar consultas que incluyen variables LLAT porque los nombres de la variable son los mismos en todos los conjuntos de datos relevantes.
- Para la variable "longitud" y la variable "latitud":
- Usar eldestinationName"longitud" y "latitud" sólo siunidadesson grados y grados, respectivamente. Si sus datos no se ajustan a estos requisitos, utilice diferentes nombres variables (por ejemplo, x, y, lonRadians, latRadians) .
- Si tiene datos de longitud y latitud expresados en diferentes unidades y por lo tanto con diferentesdestinationNames, por ejemplo, lonRadians y latRadians, Hacer un Gráfico ( datasetID .graph) hará gráficos (por ejemplo, series temporales) en lugar de mapas.
- Para la variable "altitud" y la variable " profunda":
- Usar eldestinationName"altitud" para identificar la distancia de los datos sobre el nivel del mar (valores positivos="up") . Opcionalmente, puede utilizar "altitud" para distancias por debajo del nivel del mar si los valores son negativos por debajo del mar (o si utiliza, por ejemplo, [<Anombre=scale\_factor" type="int" 1</att] (#scale_factor) convertir valores de profundidad en valores de altitud.
- Usar eldestinationName"de profundidad" para identificar la distancia de los datos por debajo del nivel del mar (valores positivos="abajo") .
- Un conjunto de datos puede no tener variables tanto "altitud" como " profundidad".
- Para estos nombres variables,unidadesdebe ser "m", "meter", o "meters". Si las unidades son diferentes (por ejemplo, fathoms) , puedes usar [<Anombre=scale\_factor" algunos Valor </att] (#scale_factor) y [<att name="units"</att] (#unidades) para convertir las unidades a metros.
- Si sus datos no se ajustan a estos requisitos, utilice otrodestinationName (por ejemplo, sobreGround, distancia ToBottom) .
- Si conoce el CRS vertical por favor especifiquelo en los metadatos, por ejemplo, "EPSG:5829" (altura instantánea por encima del nivel del mar) , "EPSG:5831" (profundidad instantánea por debajo del nivel del mar) , o "EPSG:5703" (Altura NAVD88) .
- Para el"time"variable:
- Usar eldestinationName "time"sólo para variables que incluyen la fecha completa + tiempo (o fecha, si eso es todo) . Si, por ejemplo, hay columnas separadas para fecha y horaOfDay, no utilice el nombre variable"time".
- Seeunidadespara más información sobre el atributo de unidades para el tiempo y las variables TimeStamp.
- La variable de tiempo y relacionadatiempo Variables de muestreoson únicos en que siempre convierten valores de datos del formato de tiempo de la fuente (lo que sea) en un valor numérico (segundos desde 1970-01-01T00:00Z) o un valor de String (ISO 8601:2004 (E) formato) , dependiendo de la situación.
- Cuando un usuario solicita datos de tiempo, puede solicitarlo especificando el tiempo como valor numérico (segundos desde 1970-01-01T00:00Z) o un valor de String (ISO 8601:2004 (E) formato) .
- ERDDAP™tiene una utilidadConvertir un Numeric Tiempo para/desde un tiempo de cuerda.
- SeeCómoERDDAPTratos con el tiempo.
¿Por qué sólo dos estructuras básicas de datos?
- Puesto que es difícil para los clientes humanos y los clientes informáticos tratar con un conjunto complejo de posibles estructuras de conjunto de datos,ERDDAP™utiliza sólo dos estructuras de datos básicas:
- aEstructura de los datos redondeados (por ejemplo, para datos satelitales y datos modelo) y
- aestructura de datos tabulares (por ejemplo, para datos de boya, estación y trayectoria in situ) .
- Ciertamente, no todos los datos se pueden expresar en estas estructuras, pero gran parte de ella puede. Los cuadros, en particular, son estructuras de datos muy flexibles (ver el éxito de los programas de bases de datos relacionales) .
- Esto hace que las consultas de datos sean más fáciles de construir.
- Esto hace que las respuestas de datos tengan una estructura simple, lo que hace más fácil servir los datos en una variedad más amplia de tipos de archivos estándar (que a menudo sólo soporta estructuras de datos simples) . Esta es la razón principal por la que hemos establecidoERDDAP™Por aquí.
- Esto, a su vez, nos hace muy fácil (o cualquiera) para escribir software cliente que funciona con todosERDDAP™Datasets.
- Esto facilita la comparación de datos de diferentes fuentes.
- Somos muy conscientes de que si usted está acostumbrado a trabajar con datos en otras estructuras de datos puede pensar inicialmente que este enfoque es simplista o insuficiente. Pero todas las estructuras de datos tienen compensaciones. Ninguno es perfecto. Incluso las estructuras do-it-all tienen sus desventajas: trabajar con ellas es complejo y los archivos sólo se pueden escribir o leer con bibliotecas de software especiales. Si aceptasERDDAP's acercamiento suficiente para tratar de trabajar con él, usted puede encontrar que tiene sus ventajas (en particular el soporte para múltiples tipos de archivos que pueden contener las respuestas de datos) . ElERDDAP™show de diapositivas (en particularestructuras de datos) habla mucho sobre estos problemas.
- E incluso si este enfoque suena extraño para ti, la mayoríaERDDAP™clientes nunca se darán cuenta -- simplemente verán que todos los conjuntos de datos tienen una estructura simple agradable y estarán agradecidos de que pueden obtener datos de una amplia variedad de fuentes devueltas en una amplia variedad de formatos de archivos.
Dimensiones
- ¿Y si las variables de cuadrícula en el conjunto de datos fuente no comparten las mismas variables de eje?
InEDDGridconjuntos de datos, todas las variables de datos (parte) todas las variables del eje. Así que si un conjunto de datos fuente tiene algunas variables con un conjunto de dimensiones, y otras variables con un conjunto diferente de dimensiones, tendrá que hacer dos conjuntos de datos enERDDAP. Por ejemplo, usted podría hacer unoERDDAP™conjunto de datos titulado "Some Title (en la superficie) "para mantener variables que solo utilizan\[tiempo\]\[latitud\]\[longitud\]dimensiones y hacer otraERDDAP™conjunto de datos titulado "Some Title (a profundidades) "para mantener las variables que usan\[tiempo\]\[altitud\]\[latitud\]\[longitud\]. O tal vez puede cambiar la fuente de datos para añadir una dimensión con un solo valor (por ejemplo, altitud=0) para hacer las variables consistentes.
ERDDAP™no maneja conjuntos de datos más complicados (por ejemplo, modelos que usan una malla de triángulos) Bueno. Puede servir estos conjuntos de datos enERDDAP™creando dos o más conjuntos de datosERDDAP™ (para que todas las variables de datos en cada nuevo conjunto de datos compartan el mismo conjunto de variables de eje) , pero eso no es lo que los usuarios quieren. Para algunos conjuntos de datos, usted podría considerar la posibilidad de hacer una versión regular rejillada del conjunto de datos y ofrecer que además de los datos originales. Algunos software cliente sólo pueden tratar con una red regular, por lo que al hacer esto, se llega a clientes adicionales.
Datos recubridos previstos
Algunos datos redondeados tienen una estructura compleja. Por ejemplo, nivel de satélite 2 ("un largo camino") los datos no utilizan una proyección simple. Modelos (y otros) a menudo trabajan con datos redondeados sobre varias proyecciones no cilíndricas (por ejemplo, conic, estereográfico polar, tripolar) o en redes no estructuradas (una estructura de datos más compleja) . Algunos usuarios finales quieren estos datos como es, por lo que no hay pérdida de información. Para esos clientes,ERDDAP™puede servir los datos, como es, sólo siERDDAP™administrador rompe el conjunto de datos original en unos pocos conjuntos de datos, con cada parte incluyendo variables que comparten las mismas variables de eje. Sí, eso parece extraño para las personas involucradas y es diferente de la mayoríaOPeNDAPservidores. Pero...ERDDAP™enfatiza poner los datos disponibles en muchos formatos. Eso es posible porqueERDDAP™utiliza/requiere una estructura de datos más uniforme. Aunque es un poco incómodo (i.e., diferente de lo esperado) ,ERDDAP™puede distribuir los datos proyectados.
\[Sí,ERDDAP™podría tener requisitos más bajos para la estructura de datos, pero mantener los requisitos para los formatos de salida. Pero eso llevaría a confusión entre muchos usuarios, especialmente novatos, ya que muchas solicitudes aparentemente válidas de datos con diferentes estructuras serían inválidas porque los datos no encajarían en el tipo de archivo. Continuamos volviendo al diseño del sistema actual.\]
Algunos usuarios finales quieren datos en una proyección cilíndrica lat lon como Equirectangular / placa carrée o Mercator) para facilitar el uso en diferentes situaciones. Para estas situaciones, animamos a losERDDAP™administrador para utilizar otro software (NCO?Matlab? ¿R? IDV? ...?) para volver a proyectar los datos sobre una (Proyección equirectangular / placa carrée) u otra proyección cilíndrica y servir esa forma de los datos enERDDAP™como un conjunto de datos diferente. Esto es similar a lo que hacen las personas cuando convierten datos de nivel 2 de satélite en datos de nivel 3. Una de esas herramientas esNCOque ofrece opciones de extensión para regridding data.
GIS and Reprojecting Data
Dado que el mundo del SIG suele estar orientado al mapa, los programas del SIG suelen ofrecer apoyo para reestructurar los datos, es decir, trazar los datos en un mapa con una proyección diferente.
Actualmente,ERDDAP™no tiene herramientas para replantear datos. En su lugar, le recomendamos que utilice una herramienta externa para hacer una variante del conjunto de datos, donde los datos han sido reproyectos de su forma original en una forma rectangular (longitud de latitud) array adecuado paraERDDAP.
En nuestra opinión, el CF/DAPel mundo es un poco diferente al mundo del SIG y funciona a un nivel ligeramente inferior.ERDDAP™refleja eso. En general,ERDDAP™está diseñado para trabajar principalmente con datos (no mapas) y no quiere cambiar (por ejemplo, reproyecto) esos datos. ParaERDDAP™, los datos redondeados se asocian a menudo/usualmente/preferiblemente con valores de lat lon y una proyección cilíndrica, y no algunos valores x,y de la proyección. En cualquier caso,ERDDAP™no hace nada con la proyección de los datos; simplemente pasa los datos a través, como es, con su proyección actual, sobre la teoría de que una reproyección es un cambio significativo a los datos yERDDAP™no quiere involucrarse con cambios significativos. Además, los usuarios posteriores podrían volver a proyectar ingenuamente los datos de nuevo, lo que no sería tan bueno como hacer una reproyección. (Así que, si elERDDAP™administrador quiere ofrecer los datos en una proyección diferente, bien; sólo reproyecto los datos fuera de línea y ofrecer que como un conjunto de datos diferente enERDDAP. Se ofrecen muchos conjuntos de datos basados en satélites como lo que la NASA llama Nivel 2 (Swath) y como Nivel 3 (Proyección equirectangular) versiones.) CuandoERDDAP™hace mapas (directamente o víaWMSo KML) ,ERDDAP™Actualmente sólo ofrece hacer mapas con la proyección Equirectangular / plate carrée que, afortunadamente, es aceptada por la mayoría de los programas de mapeo.
AlentamosERDDAP™administradores para utilizar algún otro software (NCO?Matlab? ¿R? IDV? ...?) para volver a proyectar los datos sobre una (Proyección equirectangular / placa carrée) u otra proyección cilíndrica y servir esa forma de los datos enERDDAP™como un conjunto de datos diferente. Esto es similar a lo que hacen las personas cuando convierten datos de nivel 2 de satélite en datos de nivel 3. Una de esas herramientas esNCOque ofrece opciones de extensión para regridding data.
Esperamos queERDDAP™tendrá herramientas integradas para ofrecer mapas con otras proyecciones en el futuro. También esperamos tener mejores conexiones con el mundo del SIG en el futuro (fuera de la corrienteWMSservicio) . Es terrible que en este mundo "moderno", los vínculos entre el CF/DAPel mundo y el mundo del SIG siguen siendo tan débiles. Ambas cosas están en la lista To Do. (Si quieres ayudar, en particular con la conexiónERDDAP™a MapServer, por favor envía un correo electrónico a Chris. John en Noaa.gov.)
Tipos de datos
ERDDAP™soporta los siguientes tipos de datos (los nombres son sensibles a los casos;'u'prefijo significa "no firmado"; el número de nombres en otros sistemas es el número de bits) :
byte
- byte ha firmado valores enteros con una gama de -128 a 127. En otros sistemas, esto a veces se llama int8. Esto se llama "tinyint" por SQL y Cassandra. ERDDAP™convertidosbooleande algunas fuentes (por ejemplo, SQL y Cassandra) en bytesERDDAP™con un valor de 0=falso, 1=verdad, y 127=missing\_value.
ubyte
- ubyte tiene valores enteros sin firmar con una gama de 0 a 255. En otros sistemas, esto a veces se llama uint8.
corto
- corto ha firmado valores enteros con una gama de -32768 a 32767. En otros sistemas, esto a veces se llama int16. Esto se llama "smallint" por SQL y Cassandra.
ushort
- ushort tiene valores enteros sin firmar con una gama de 0 a 65535. En otros sistemas, esto se llama a veces uint16.
int
- int ha firmado valores enteros con una gama de -2147483648 a 2147483647. En otros sistemas, esto a veces se llama int32. Esto se llama "integer"|numérico (?) "por SQL y "int" por Cassandra.
Uint
- Uint tiene valores enteros sin firmar con una gama de 0 a 4294967295. En otros sistemas, esto se llama a veces uint32.
largo
- largo ha firmado valores enteros con una gama de -9223372036854775808 a 9223372036854775807. En otros sistemas, esto a veces se llama int64. Esto se llama "bigint"|numérico (?) "por SQL y "bigint" por Cassandra. Debido a que muchos tipos de archivos no soportan datos largos, su uso se desalienta. Cuando sea posible, use doble en su lugar (véase infra) .
ulong
- ulong tiene valores enteros no firmados con una gama de 0 a 18446744073709551615 En otros sistemas, esto se llama a veces uint64. Debido a que muchos tipos de archivos no soportan datos ulong, su uso se desalienta. Cuando sea posible, use doble en su lugar (véase infra) .
flotador
- flotador es un flotador IEEE 754 con una gama de aproximadamente +/- 3.402823466e+38. En otros sistemas, esto se llama a veces flotador32. Esto se llama "real"|flotador (?) |decimal (?) |numérico (?) "por SQL y "float" por Cassandra. El valor especial NaN significa No-a-Número. ERDDAP™convierte valores de infinito positivos y negativos a NaN.
doble
- doble es un IEEE 754 doble con una gama de aproximadamente +/- 1.7976931348623157E+308. En otros sistemas, esto se llama a veces flotador64. Esto se llama "doble precisión|flotador (?) |decimal (?) |numérico (?) "por SQL y "doble" por Cassandra. El valor especial NaN significa No-a-Número. ERDDAP™convierte valores de infinito positivos y negativos a NaN.
char
- char es un solo, 2 bytes (16-bit) Unicode UCS-2 carácterdesde\u0000 (#0) a través\uffff (#65535) . \uffff's definition is Not-a-Character, analogous to a double value of NaN. El uso de char se desalienta porque muchos tipos de archivos no soportan los charcos o solo apoyan los charcos de 1 byte (véase infra) . Considere usar String en su lugar. Los usuarios pueden utilizar variables char para hacer gráficos.ERDDAP™convertir los caracteres a su número de punto de código Unicode, que se puede utilizar como datos numéricos.
String
- String es una secuencia de 0 o más, 2 bytes (16-bit) caracteres Unicode UCS-2. ERDDAP™usa/interpreta una cadena de 0 longitud como un valor perdido.ERDDAP™no soporta una verdadera cuerda nula. La longitud de cadena máxima teórica es de 2147483647 caracteres, pero probablemente hay varios problemas en varios lugares incluso con cuerdas algo más cortas. UsoERDDAP's String for SQL's carácter, varchar, carácter variable, binario, varbinario, intervalo, array, multiset, xml y cualquier otro tipo de datos de bases de datos que no se ajuste limpiamente con ningún otro tipoERDDAP™Tipo de datos. UsoERDDAP's String for Cassandra's "text" and any other Cassandra data type that does not fit cleanly with any otherERDDAP™Tipo de datos.
AntesERDDAP™v2.10,ERDDAP™no apoyó los tipos enteros no firmados internamente y ofreció un apoyo limitado en sus lectores de datos y escritores.
Limitaciones del tipo de datos
Puedes pensar enERDDAP™como un sistema que tiene conjuntos de datos virtuales, y que funciona leyendo datos de la fuente de un conjunto de datos en un modelo de datos interno y escribiendo datos a diversos servicios (por ejemplo,(OPeN)DAP,WMS) y tipos de archivos en respuesta a solicitudes de usuario.
- Cada lector de entradas admite un subconjunto de los tipos de datos queERDDAP™soportes. Así que leyendo datosERDDAPLas estructuras internas de datos no son un problema.
- Cada escritor de salida también soporta un subconjunto de tipos de datos. Eso es un problema porqueERDDAPtiene que apretar, por ejemplo, datos largos en tipos de archivos que no soportan datos largos.
A continuación se explican las limitaciones (o ninguno) de varios escritores de producción y cómoERDDAP™trata de los problemas. Tales complicaciones son parte inherente deERDDAPEl objetivo de hacer que los sistemas dispares sean interoperables.
ASCII
- ASCII (Csv,.tsv, etc.) archivos de texto -
- Todos los datos numéricos se escriben a través de su representación de String (con valores de datos perdidos que aparecen como cadenas de 0 longitud) .
- AunqueERDDAP™escribe valores largos y largos correctamente a los archivos de texto ASCII, muchos lectores (por ejemplo, programas de hoja de cálculo) no puede tratar correctamente con valores largos y largos y en lugar de convertirlos en valores dobles (con pérdida de precisión en algunos casos) .
- Char and String data are written via JSON Strings, which handle all Unicode characters (notablemente, los caracteres "no usuales" más allá de ASCII #127, por ejemplo, el carácter Euro aparece como "\u20ac") .
JSON
- JSON (.json,.jsonlCSV, etc.) archivos de texto -
- Todos los datos numéricos se escriben a través de su representación de String.
- Los datos Char y String se escriben como JSON Strings, que manejan todos los caracteres Unicode (notablemente, los caracteres "no usuales" más allá de ASCII #127, por ejemplo, el carácter Euro aparece como "\u20ac") .
- Los valores perdidos para todos los tipos de datos numéricos aparecen como nulos.
.nc3 archivos
- .nc3 archivos no admiten nativamente ningún tipo de datos enteros no firmados. Antes de CF v1.9, CF no apoyó tipos enteros no firmados. Para lidiar con esto,ERDDAP™2.10+ sigue el estándar NUG y siempre añade un atributo "\_Unsigned" con un valor de "true" o "false" para indicar si los datos son de una variable no firmada o firmada. Todos los atributos enteros están escritos como atributos firmados (por ejemplo, byte) con valores firmados (por ejemplo, un ubyteactual\_rangeatributo con valores 0 a 255, aparece como atributo byte con valores 0 a -1 (el inverso del valor complementario de ambos del valor fuera de rango). No hay manera fácil de saber qué atributos (firmados) enteros deben leerse como atributos no firmados.ERDDAP™soporta el atributo "\_Unsigned" cuando lee.nc3 archivos.
- .nc3 archivos no soportan los tipos de datos largos o largos.ERDDAP™ofertas con esto por convertirlos temporalmente en dos variables. Los dobles pueden representar exactamente todos los valores hasta +/- 9,007,199,254,740,992 que es 2^53. Esta es una solución imperfecta.Unidatase niega a hacer una actualización menor.nc3 para tratar con esto y problemas relacionados, citando.nc4 (un cambio importante) como la solución.
- La especificación CF (antes del v1.9) dijo que es compatible con un tipo de datos de char pero no está claro si el char está destinado sólo como los bloques de construcción de arrays de char, que son efectivamente Strings. Las preguntas a su lista de correo sólo dieron respuestas confusas. Debido a estas complicaciones, es mejor evitar las variables de char enERDDAP™y utilizar variables String siempre que sea posible.
- Tradicionalmente,.nc3 archivos solo soportan cadenas con ASCII-encoded (7-bit, #0 - #127) personajes. NUG (yERDDAP) extensión que (empezando ~2017) incluyendo el atributo "\_Encoding" con un valor de "ISO-8859-1" (una extensión de ASCII que define todos los 256 valores de cada personaje de 8 bits) o "UTF-8" para indicar cómo se codifican los datos de String. Otras codificación pueden ser legales pero se desalientan.
.nc4 archivos
- .nc4 archivos soportan todosERDDAP's tipos de datos.
Archivos NCCSV
Los archivos NCCSV 1.0 no soportan ningún tipo de datos enteros no firmados. Archivo NCCSV 1.1+soporte a todos los tipos de datos enteros no firmados.
DAP
- (OPeN)DAP (.das, .dds, .asc archivos ASCII, y .dods archivos binarios) -
- (OPeN)DAPmaneja corto, ushort, int, uint, flotador y doble valores correctamente.
- (OPeN)DAPtiene un tipo de datos "byte" que define como no firmado, mientras que históricamente, THREDDS yERDDAP™han tratado "byte" como firmado en su(OPeN)DAPservicios. Para lidiar con esto mejor,ERDDAP™2.10+ sigue el estándar NUG y siempre añade un atributo "\_Unsigned" con un valor de "verdad" o "falso" para indicar si los datos son lo queERDDAP™llama byte o ubyte. Todos los atributos byte y ubyte se escriben como atributos "byte" con valores firmados (por ejemplo, un ubyteactual\_rangeatributo con valores 0 a 255, aparece como atributo byte con valores 0 a -1 (el inverso del valor complementario de ambos del valor fuera de rango). No hay manera fácil de saber qué atributos "byte" deben leerse como atributos ubyte.
- (OPeN)DAPno soporta largos firmados o no firmados.ERDDAP™ofertas con esto por convertirlos temporalmente en dobles variables y atributos. Los dobles pueden representar exactamente todos los valores hasta 9,007,199,254,740,992 que es 2^53. Esta es una solución imperfecta.OPeNDAP (la organización) se niega a hacer una actualización menorDAP2.0 para tratar con esto y problemas relacionados, citandoDAP4 (un cambio importante) como la solución.
- Porque...(OPeN)DAPno tiene ningún tipo de datos char separados y técnicamente sólo admite caracteres ASCII de 1 byte (#0 - #127) en Strings, las variables de datos de char aparecerán como pendientes de 1 caracteres en(OPeN)DAP.das, .dds, y .dods respuestas.
- Técnicamente, el(OPeN)DAPespecificación sólo admite cadenas con caracteres codificados por ASCII (#0 - #127) . NUG (yERDDAP) extensión que (empezando ~2017) incluyendo el atributo "\_Encoding" con un valor de "ISO-8859-1" (una extensión de ASCII que define todos los 256 valores de cada personaje de 8 bits) o "UTF-8" para indicar cómo se codifican los datos de String. Otras codificación pueden ser legales pero se desalientan.
Tipo de datos
- Debido al mal apoyo para datos largos, ulong y char en muchos tipos de archivos, desalentamos el uso de estos tipos de datos enERDDAP. Cuando sea posible, use el doble en lugar de largo y largo, y use String en lugar de char.
- Metadatos - Porque(OPeN)DAP's .das y .dds respuestas no soportan atributos o tipos de datos largos o largos (y en su lugar mostrarles como dobles) , puede que desee utilizarERDDAP's tabular representation of metadata as seen in thehttp.../erddap/ info / datasetID .html página web (por ejemplo, https://coastwatch.pfeg.noaa.gov/erddap/info/cwwcNDBCMet/index.html ) (que también puede obtener en otros tipos de archivos, por ejemplo, .csv,.htmlTable,.itx,.json,.jsonlCSV1,.jsonlCSV,.jsonlKVP,.mat,.nc,.nccsv,.tsv,.xhtml) o el.nccsvRespuesta a los metadatos (por ejemplo, https://coastwatch.pfeg.noaa.gov/erddap/tabledap/cwwcNDBCMet.nccsvMetadata aunque.nccsvLos metadatos solo están disponibles para conjuntos de datos tabulares) , ambos soportan todos los tipos de datos (notable, largo, ulong, y char) .
Archivos multimedia
No todos los datos son arrays de números o texto. Algunos conjuntos de datos consisten o incluyen archivos multimedia, como archivos de imagen, audio y vídeo.ERDDAP™tiene algunas características especiales para facilitar el acceso de los usuarios a los archivos multimedia. Es un proceso de dos pasos:
- Haga que cada archivo sea accesible a través de su propia URL, a través de un sistema que admite solicitudes de rango byte. La forma más fácil de hacer esto es poner los archivos en un directorio queERDDAP™tiene acceso. (Si están en un contenedor como un.ziparchivo, descifrarlos, aunque es posible que desee ofrecer el.ziparchivo a los usuarios también.) Entonces, haz unaEDDTableDesdeFileNamesdataset para hacer que estos archivos sean accesiblesERDDAP™, notablemente víaERDDAP's"files"sistema.
Todos los archivos accesibles a través de EDDTableDesdeFileNames yERDDAP's"files"apoyo a los sistemasbyte range requests. Normalmente, cuando un cliente (por ejemplo, un navegador) hace una solicitud a una URL, que consigue todo el archivo como la respuesta. Pero con una solicitud de rango byte, la solicitud especifica una gama de bytes del archivo, y el servidor sólo devuelve esos bytes. Esto es relevante aquí porque los reproductores de audio y vídeo en los navegadores sólo funcionan si el archivo se puede acceder a través de solicitudes de rango byte.
Opcional: Si tiene más de un conjunto de datos con archivos multimedia asociados, puede hacer sólo un EDDTableDesdeFileNames que tiene un subcarpeta para cada grupo de archivos. La ventaja es que cuando desea añadir nuevos archivos multimedia para un nuevo conjunto de datos, todo lo que tiene que hacer es crear una nueva carpeta y poner los archivos en esa carpeta. La carpeta y los archivos se añadirán automáticamente al conjunto de datos EDDTableDesdeFileNames.
- Opcional: Si tiene un conjunto de datos que incluye referencias a archivos multimedia, agréguelo aERDDAP. Por ejemplo, puede tener un archivo .csv con una fila por cada vez que alguien vio una ballena y una columna que incluye el nombre de un archivo de imagen relacionado con ese avistamiento. Si el nombre del archivo de imagen es sólo el nombre de archivo, por ejemplo, Img20141024T192403Z, no una URL completa, entonces usted necesita añadirarchivoAccessBase Url y/o archivoAccessSuffixatributos a los metadatos para esodataVariableque especifica la baseURL y sufijo para esos nombres de archivo. Si ha hecho que los archivos sean accesibles a través de EDDTableDesdeFileNames, la URL estará en el formulario base /erddap/files/ datasetID / Por ejemplo,
<att name="fileAccessBaseUrl">*someBaseURL*</a>
<att name="fileAccessSuffix">.png</a>
Si hay un.zipu otro archivo contenedor con todos los archivos multimedia relacionados con una variable de datos, recomendamos que también haga que ese archivo sea accesible a los usuarios (véase el paso 1 supra) y luego identificarlo con unarchivoAccessArchive Urlatributo.
\[Comenzando enERDDAP™v1.82\]Si usted hace el primer paso arriba (o ambos pasos) , entonces cuando un usuario ve elERDDAP™ "files"sistema para ese conjunto de datos (o pide ver un subconjunto del conjunto de datos a través de un.htmlTablepetición, si usted hizo el segundo paso) ,ERDDAP™mostrará un icono '?' a la izquierda del nombre de archivo. Si el usuario pasa por encima de ese icono, verá un popup mostrando la imagen, o un reproductor de audio, o un reproductor de vídeo. Los navegadores solo soportan un número limitado de tipos
- imagen (generalmente .gif, .jpg, y .png) ,
- audio (generalmente .mp3, .ogg, y .wav) , y
- archivos de vídeo (generalmente .mp4, .ogv, y . webm) .
El soporte varía con diferentes versiones de diferentes navegadores en diferentes sistemas operativos. Así que si usted tiene una opción de qué tipo de archivo para ofrecer, tiene sentido ofrecer estos tipos.
O, si un usuario hace clic en el nombre de archivo mostrado en unERDDAP™página web, su navegador mostrará la imagen, audio o archivo de vídeo como una página web separada. Esto es muy útil para ver una imagen muy grande o video escalado a pantalla completa, en lugar de en un popup.
Trabajando con archivos AWS S3
Amazon Web Service (AWS) es un vendedorcloud computingservicios.S3es un sistema de almacenamiento de objetos ofrecido por AWS. En lugar del sistema jerárquico de directorios y archivos de un sistema de archivos tradicional (como un disco duro en su PC) , S3 ofrece sólo "paquetes" que sostienen "objetos" (los llamaremos"files") .
Para archivos ASCII (por ejemplo, .csv) ,ERDDAP™puede trabajar con los archivos en los cubos directamente. Lo único que necesitas hacer es especificar el<fileDir monedas para el conjunto de datos usando un formato específico para el cubo AWS, por ejemplo, https://bucketName.s3.aws-region.amazonaws.com/subdirectory/ . No deberías usar<cacheDesde el usuario. Vea a continuación los detalles.
Pero para archivos binarios (por ejemplo,.nc, .grib, .bufr, and.hdfarchivos) , necesitas usar el<cacheDesde el sistema de usuario descrito a continuación.ERDDAP, netcdf-java (queERDDAP™utiliza para leer datos de estos archivos) , y otros software de datos científicos están diseñados para trabajar con archivos en un sistema de archivos tradicional que ofrecenivel de bloquesacceso a archivos (que permite leer trozos de un archivo) , pero S3 sólo ofrecenivel de archivo (objeto) acceso a archivos (que sólo permite leer todo el archivo) . AWS ofrece una alternativa a S3,Elastic Block Store (EBS) ), que admite el acceso de nivel de bloque a los archivos pero es más caro que S3, por lo que rara vez se utiliza para el almacenamiento masivo de grandes cantidades de archivos de datos. (Así que cuando la gente dice almacenar datos en la nube (S3) es barato, es generalmente una comparación de manzanas a naranjas.)
S3 Buckets
El contenido de un cubo. Llaves. Delimitadores.
Técnicamente, los cubos S3 no están organizados en una estructura jerárquica de archivos como un sistema de archivos en una computadora. En cambio, los cubos sólo contienen "objetos" (archivos) , cada uno de los cuales tiene un "key" (un nombre) . Un ejemplo de una llave en ese cubo de noaa-goes17 es
ABI-L1b-RadC/2019/235/22/OR\\_ABI-L1b-RadC-M6C01\\_G17\\_s20192352201196\\_e20192352203569\\_c20192352204013.nc
El URl correspondiente para ese objeto es
AWS admite una pequeña variación en cómo se construye esa URL, peroERDDAP™requiere este formato específico:
https://bucketName.s3.region.amazonaws.com/key
Es práctica común, como con este ejemplo, hacer que los nombres de clave se vean como una ruta jerárquica más un nombre de archivo, pero técnicamente no lo son. Puesto que es común y útil,ERDDAP™trata las claves con /'s como si fueran una ruta jerárquica más nombre de archivo, y esta documentación se referirá a ellas como tal. Si las llaves de un cubo no usan /'s (por ejemplo, una llave como
ABI-Lib.2018.052.22.OR\_ABI-L1b-RadM2-M3C10\_G16\_s20180522247575), entoncesERDDAP™tratará toda la llave como un nombre de archivo largo.
Private vs Public Buckets -- El administrador del cubo S3 puede hacer que el cubo y sus contenidos sean públicos o privados. Si es público, cualquier archivo en el cubo puede ser descargado por cualquiera usando la URL para el archivo. Amazon tiene unDatos abiertosprograma que acoge conjuntos de datos públicos (incluidos los datosNOAA, NASA y USGS) gratis y no cobra por nadie para descargar los archivos de esos cubos. Si un cubo es privado, los archivos en el cubo sólo son accesibles para los usuarios autorizados y AWS cobra una tarifa (generalmente pagado por el dueño del cubo) para descargar archivos a un ordenador no AWS S3.ERDDAP™puede trabajar con datos en cubos públicos y privados.
Credenciales de AWS
Para hacerlo asíERDDAP™puede leer el contenido de cubos privados, necesita credenciales de AWS y necesita almacenar un archivo de credenciales en el lugar estándar asíERDDAP™puede encontrar la información. Vea el SDK AWS paraJava2.x documentación:Establecer credenciales predeterminadas. (La opción para almacenar los valores comoJavaparámetros de línea de comandos\[tomcat\]/bin/setenv.sh puede ser una buena opción.)
AWS /files/
- /files/sistema -- ElERDDAP™ /files/sistemapermite a los usuarios descargar los archivos fuente para un conjunto de datos. Recomendamos que encienda esto para todos los conjuntos de datos con archivos fuente porque muchos usuarios quieren descargar los archivos fuente originales.
- Si los archivos están en un cubo S3 privado, la solicitud del usuario para descargar un archivo será manejada porERDDAP™, que leerá los datos del archivo y luego lo transmitirá al usuario, aumentando así la carga en suERDDAP™, usando el ancho de banda entrante y saliente, y te hace (elERDDAP™administrador) pagar la cuota de egreso de datos a AWS.
- Si los archivos están en un cubo S3 público, la solicitud del usuario de descargar un archivo se redirigirá a la URL AWS S3 para ese archivo, por lo que los datos no fluirán a través deERDDAP™, reduciendo así la cargaERDDAP. Y si los archivos están en un Amazon Open Data (gratis) cubo público, entonces tú (elERDDAP™administrador) No tendrá que pagar ninguna cuota de egreso de datos a AWS. Por lo tanto, hay una gran ventaja al servir datos de público (no privado) S3 cubos, y una gran ventaja para servir datos de Amazon Open Data (gratis) cubos.
ERDDAP™and AWS S3 Buckets
ERDDAP™and AWS S3 Buckets
Afortunadamente, después de mucho esfuerzo,ERDDAP™tiene una serie de características que le permiten tratar con los problemas inherentes de trabajar con el nivel de bloques S3 acceso a los archivos de una manera razonablemente eficiente:
- \[Descargo: Trabajar con cubos AWS S3 es mucho trabajo extra. AWS es un enorme ecosistema de servicios y características. Hay mucho que aprender. Toma tiempo y esfuerzo, pero es factible. Sé paciente y harás que las cosas funcionen. Busque ayuda
(G)AWS documentation, sitios web comoReflujo de basura, y el regular
ERDDAP™Opciones de apoyoSi te atascas.\]
- Puede ser difícil incluso descubrir la estructura del directorio y los nombres de archivos de los archivos en un cubo S3.ERDDAP™tiene una solución para este problema: EDDTableDesdeFileNames tiene una especial\\\*deOnTheFlyopción que le permite hacer un conjunto de datos EDDTableDesdeFileNames que permite a los usuarios navegar por el contenido de un cubo S3 (y descargar archivos) a través del conjunto de datos"files"Opción. Hay unaejemplo de esto a continuación.
- ERDDAP™puede leer datos dearchivos de datos externos comprimidos, por lo que está bien si los archivos en S3 se almacenan como.gz,.gzip,.bz2, .Z u otros tipos de archivos de datos comprimidos externamente, que pueden dramáticamente (2 - 20X) recortado en costos de almacenamiento de archivos. A menudo no hay penalización de tiempo para utilizar archivos comprimidos externamente, ya que el tiempo guardado mediante la transferencia de un archivo más pequeño de S3 aERDDAPequilibra aproximadamente el tiempo extra necesario paraERDDAP™para descomprimir el archivo. Para usar esta característica, sólo tiene que asegurarse de que el conjunto de datos<fileNameRegex permite el tipo de archivo comprimido (por ejemplo, añadiendo (|.gz) al final del regex) .
- Para el caso más común, donde usted tiene unERDDAP™instalado en su PC para test/desarrollo y donde el conjunto de datos tiene archivos de datos binarios que se almacenan como objetos en un cubo S3, un enfoque para obtener el conjunto de datos enERDDAP™es:
-
Cree un directorio en su PC para tener algunos archivos de datos de prueba.
-
Descargar dos archivos de datos de la fuente al directorio que acaba de crear.
-
UsoGenerarDatasetsXmlpara generar el trozo dedatasets.xmlpara el conjunto de datos basado en los dos archivos de datos locales.
-
Compruebe que ese conjunto de datos funciona como desea conDasDdsy/o su localERDDAP.
Los siguientes pasos hacen una copia de ese conjunto de datos (que obtendrá datos del cubo S3) on a publicERDDAP.
-
Copiar el trozo dedatasets.xmlpara el conjunto de datosdatasets.xmlpara el públicoERDDAP™que servirá los datos.
-
Crear un directorio en públicoERDDAPEs el disco duro local para mantener un caché de archivos temporales. El directorio no utilizará mucho espacio en disco (ver cacheSizeGB abajo) .
-
Cambiar el valor del conjunto de datos<fileDir titulada tag para que apunta al directorio que acabas de crear (aunque el directorio esté vacío) .
-
Añadir uncacheDesde el aeropuertoetiqueta que especifica el nombre del cubo del conjunto de datos y prefijo opcional (i.e. directorio) en elAws S3 URL Formato queERDDAP™Requisitos.
-
Add a [<cacheSizeGB confiar] (#cachefromurl) etiqueta al conjunto de datos xml (por ejemplo, 10 es un buen valor para la mayoría de los conjuntos de datos) para decirERDDAP™para limitar el tamaño del caché local (i.e., no trate de caché todos los archivos remotos) .
-
Ver si eso funciona en públicoERDDAP. Note que la primera vezERDDAP™carga el conjunto de datos, tomará mucho tiempo cargar, porqueERDDAP™necesita descargar y leer todos los archivos de datos.
-
Si el conjunto de datos es una enorme colección de enormes archivos de datos redondeados, esto llevará mucho tiempo y será poco práctico. En algunos casos, para los archivos de datos redondeados,ERDDAP™puede extraer la información necesaria (por ejemplo, el punto de tiempo para los datos en un archivo de datos redondeado) desde el nombre del archivo y evitar este problema. SeeAggregation via Nombres del archivo.
- Facultativo (pero especialmente para EDDTableDeFiles datasets) , puedes añadir unnTreadsetiqueta al conjunto de datos para decirERDDAPpara utilizar más de 1 hilo al responder a la solicitud de datos de un usuario. Esto minimiza los efectos del retraso que ocurre cuandoERDDAP™lee archivos de datos (remoto) AWS S3 cubos en el caché local y (quizás) descomprimirlos.
AWS S3 Open Data
Como parte deNOAA'sBig Data Program,NOAAtiene asociaciones con cinco organizaciones, incluyendo AWS, para "explorar los beneficios potenciales de almacenar copias de observaciones clave y productos modelo en la nube para permitir el cálculo directamente sobre los datos sin necesidad de mayor distribución". AWS incluye los conjuntos de datos que obtiene deNOAAcomo parte de su programa para ofrecer acceso público a una gran colección deDatos abiertos sobre AWS S3desde cualquier ordenador, ya sea una instancia de computación de Amazon (un ordenador alquilado) en la red AWS o su propio PC en cualquier red. El ejemplo a continuación supone que usted está trabajando con un conjunto de datos accesible públicamente.
Acceso a archivos en un cubo AWS S3
Para un cubo de datos S3 privado, el propietario del cubo debe darle acceso al cubo. (Vea la documentación de AWS.)
En todos los casos, necesitará una cuenta AWS porque el SDK AWS paraJava (queERDDAP™usos para recuperar información sobre el contenido de un cubo) requiere credenciales de la cuenta AWS. (más sobre esto abajo)
ERDDAP™sólo puede acceder a cubos AWS S3 si especifica el [<cacheDesde el usuario] (#cachefromurl) (o<fileDir título) en un formato específico:
https://bucketName.s3.aws-region.amazonaws.com/prefix/
Donde
- El baldeName es la forma corta del nombre del cubo, por ejemplo noaaa-goes17 .
- La aws-region, por ejemplo, nosotros-este-1, es de la columna "Región" en una de las tablas deAWS Service Endpointsdonde se encuentra el cubo.
- El prefijo es opcional. Si está presente, debe terminar con'/'.
Por ejemplo, https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
Este formato URL es una de las recomendaciones de AWS S3: verAcceso a un cuboyesta descripción de prefijos.ERDDAP™requiere que combine la URL del cubo y el prefijo opcional en una URL para especificar<cacheDesde el usuario (o<archivoDir contactos) donde se encuentran los archivos.
Prueba de seguridad pública
Para cubos públicos, puede y debe probar la URL del cubo del directorio AWS S3 en su navegador, por ejemplo, https://noaa-goes17.s3.us-east-1.amazonaws.com Si la URL del cubo es correcta y adecuadaERDDAP, devolverá un documento XML que tiene (parcial) lista de los contenidos de ese cubo. Desafortunadamente, la URL completa (i.e., URL del cubo más prefijo) queERDDAP™quiere un conjunto de datos dado no funciona en un navegador. AWS no ofrece un sistema para navegar por la jerarquía de un cubo fácilmente en su navegador. (Si eso es incorrecto, por favor envía un correo electrónico a Chris. John en Noaa.gov. De lo contrario, Amazon, por favor agrega apoyo para esto!)
Ver el contenido de un cubo
Los cubos S3 suelen contener un par de categorías de archivos, en un par de pseudo subdirectorios, que podrían convertirse en un par deERDDAP™Datasets. Para hacer elERDDAP™datasets, necesita saber el directorio inicial para<cacheDesde el usuario (o<fileDir contactos) y el formato de los nombres de archivos que identifican ese subconjunto de archivos. Si intentas ver todo el contenido de un cubo en un navegador, S3 te mostrará los primeros 1000 archivos, que es insuficiente. Actualmente, la mejor manera de ver todo el contenido de un cubo es hacer unEDDTableDesdeFileNamesDataset (en su PCERDDAP™y/o en su públicoERDDAP) , que también le da una manera fácil de navegar por la estructura del directorio y descargar archivos. El<archivoDir título para que será la URL que hizo anteriormente, por ejemplo, https://noaa-goes17.s3.us-east-1.amazonaws.com .\[¿Por qué AWS S3 no ofrece una manera rápida y fácil de hacer sin una cuenta de AWS?\]Observe que cuando hago esto en mi PC en una red no asombro, parece que Amazon ralentiza la respuesta a un truco (alrededor de 100 (?) archivos por chunk) después de los primeros pedazos (de 1000 archivos por trozo) se descargan. Puesto que los cubos pueden tener un gran número de archivos (noaa-goes17 tiene 26 millones) , conseguir todo el contenido de un cubo puede tomar EDDTableDesdeFileNames varias horas (¡Por ejemplo, 12!) para terminar.\[Amazon, ¿es cierto?\]
Hacer un EDDTable DeFileNames Dataset con un cubo AWS S3
Si tiene un nombre de cubo, pero no tiene ya una lista de archivos en el cubo S3 o el prefijo que identifica la ubicación de los archivos pertinentes en el cubo, utilice las instrucciones siguientes para hacer un conjunto de datos EDDTableDesdeFileNames para que pueda navegar por la jerarquía de directorios del cubo S3 a través deERDDAP's"files"sistema.
- Abra una cuenta AWS ERDDAP™usosAWS SDK paraJavapara obtener información de cubo de AWS, por lo que necesitacrear y activar una cuenta AWS. Es un trabajo bastante grande, con muchas cosas que aprender.
- Pon tus credenciales de AWS dondeERDDAP™puede encontrarlos. Siga las instruccionesCrear Credenciales AWS y Región para el DesarrolloAsí que...ERDDAP™ (específicamente, el SDK AWS paraJava) será capaz de encontrar y utilizar sus credenciales de AWS. SiERDDAP™No puedes encontrar las credenciales, verás una Java.lang. IlegalArgumentException: profile file cannot be null error inERDDAPEs un archivo log.txt.
Hint para Linux y Mac OS: el archivo de credenciales debe estar en el directorio de inicio del usuario que está ejecutando Tomcat (yERDDAP) (para este párrafo, asumiremos usuario=tomcat) en un archivo llamado ~/.aws/credentials . No asuma que ~ es /home/tomcat -- realmente use cd ~ para averiguar dónde piensa el sistema operativo ~ para el usuario=tomcat es. Cree el directorio si no existe. Además, después de poner el archivo de credenciales en su lugar, asegúrese de que el usuario y el grupo para el archivo son tomcat y luego use las credenciales chmod 400 para asegurarse de que el archivo es sólo lectura para user=tomcat.
- Crear la URL del cubo en elformato queERDDAP™Requisitos, por ejemplo, https://noaa-goes17.s3.us-east-1.amazonaws.com , y (para cubos públicos) Pruébalo en un navegador para asegurarse de que devuelve un documento XML que tiene una lista parcial de los contenidos de ese cubo.
- UsoGenerarDatasetsXmlcrear unEDDTableDesdeFileNamesDataset:
-
Para el directorio Inicio, utilice esta sintaxis: \\\ deOnTheFly, tuBucketUrl* por ejemplo, \\\*deOnTheFly, https://noaa-goes17.s3.us-east-1.amazonaws.com/
-
¿Nombre de archivo regex? .
-
¿Recuerdo? verdadero
-
reload ¿Cada Nuez? 10080
-
¿Institución?NOAA
-
¿Resumen? nada (ERDDAP™creará un resumen decente automáticamente.)
-
¿El título? nada (ERDDAP™creará un título decente automáticamente.) Como es habitual, debe editar el XML resultante para verificar la corrección y hacer mejoras antes de que el conjunto de conjuntos de datos lo use endatasets.xml.
-
- Si sigue las instrucciones anteriores y carga el conjunto de datosERDDAP, ha creado un conjunto de datos EDDTableDesdeFiles. Como ejemplo, y para que sea más fácil para cualquiera navegar y descargar archivos de los cubos AWS Open Data, hemos creado los conjuntos de datos EDDTableDesdeFileNames (ver la lista en
https://upwell.pfeg.noaa.gov/erddap/search/index.html?searchFor=awsS3Files\_ ) para casi todo elCubos de datos abiertos AWS S3.
\[Los pocos cubos que no incluimos tienen un gran número de archivos en el directorio raíz (más de lo que se puede descargar en una cantidad razonable de tiempo) , o no permiten el acceso público (¿No se supone que todos sean públicos?) , o son Solicitantes paga cubos (por ejemplo, Sentinel) .\]
Si hace clic en"files"enlace para uno de estos conjuntos de datos, puede navegar por el árbol del directorio y archivos en ese cubo S3. Por el camino\\\*deOnTheFly EDDTableDeFiles funciona, estos listados de directorios siempre están perfectamente actualizados porqueERDDAP™los pone en el vuelo. Si hace clic en el árbol del directorio a un nombre de archivo real y haga clic en el nombre del archivo,ERDDAP™redirigirá su solicitud a AWS S3 para que pueda descargar el archivo directamente desde AWS. Entonces puedes inspeccionar ese archivo.
¿Problemas? Si tu EDDTableDesdeFiles no se cargaráERDDAP™ (o DasDds) , busque en el archivo log.txt para un mensaje de error. Si ves un Java.lang. IlegalArgumentExcepción: el archivo de perfil no puede ser un error nulo, el problema es que el SDK AWS paraJava (utilizado porERDDAP) no encuentra el archivo de credenciales. Vea las instrucciones de credenciales arriba.
Es lamentable que AWS no simplemente permita que la gente use un navegador para ver el contenido de un cubo público.
Entonces puedes hacerERDDAP™conjuntos de datos que dan a los usuarios acceso a los datos en los archivos.
Ver las instrucciones enERDDAP™and S3 Buckets (arriba) .
Para la muestra EDDTableDeFileNames dataset que usted hizo anteriormente, si usted hace un poco de caceo alrededor con el directorio y nombres de archivos en el árbol del directorio, se hace evidente que el directorio de nivel superior nombres (por ejemplo, ABI-L1b-RadC) corresponde a lo queERDDAP™llamaría conjuntos de datos separados. El cubo con el que estás trabajando puede ser similar. Entonces podrías seguir creando conjuntos de datos separados enERDDAP™para cada uno de esos conjuntos de datos, utilizando, por ejemplo,
https://noaa-goes17.s3.us-east-1.amazonaws.com/ABI-L1b-RadC/
como el<cacheDesde el usuario. Lamentablemente, para este ejemplo en particular, los conjuntos de datos en el cubo parecen ser conjuntos de datos de nivel 1 o nivel 2, queERDDAP™ no es particularmente bueno, porque el conjunto de datos es una colección más complicada de variables que utilizan diferentes dimensiones.
Archivos NcML
Los archivos NcML le permiten especificar cambios en la marcha a una o más fuente originalNetCDF (v3 o v4) .nc, .grib, .bufr, or.hdf (v4 o v5) archivos, y luego tienenERDDAP™tratar el.ncarchivos ml como los archivos fuente.ERDDAP™datasets aceptará.ncarchivos de ml cada vez.ncSe esperan archivos. Los archivos NcML DEBE tener la extensión.ncml. Ver elUnidataDocumentación NcML. NcML es útil porque puedes hacer algunas cosas con él (por ejemplo, haciendo diferentes cambios a diferentes archivos en una colección, incluyendo añadir una dimensión con un valor específico a un archivo) que no puedes hacer conERDDAP'sdatasets.xml.
- Cambios en un.ncEl último tiempoModified del archivo de ml hará que el archivo se vuelva a cargar cuando el conjunto de datos se vuelva a cargar, pero cambia a la parte subyacente.ncLos archivos de datos no serán notados directamente.
- Hint: NcML es\*muy bien.\*sensible al orden de algunos elementos en el archivo NcML. Piense en NcML como especificar una serie de instrucciones en el orden especificado, con la intención de cambiar los archivos fuente (el estado en el inicio / la parte superior del archivo NcML) en los archivos de destino (el estado en el extremo/abajo del archivo NcML) .
Una alternativa al NcML es laNetCDFOperadores (NCO) . La gran diferencia es que el NcML es un sistema para hacer cambios en la marcha (así que los archivos fuente no se alteran) , mientrasNCOse puede utilizar para hacer cambios (o nuevas versiones de) los archivos. AmbosNCOy NcML son muy, muy flexibles y le permiten hacer casi cualquier cambio que pueda pensar en los archivos. Para ambos, puede ser difícil averiguar exactamente cómo hacer lo que usted desea hacer - comprobar la web para ejemplos similares. Ambos son herramientas útiles para la preparación de netCDF yHDFarchivos para uso conERDDAP, en particular, para hacer cambios más allá de loERDDAPEl sistema de manipulación puede hacerlo.
Ejemplo #1: Añadiendo una dimensión del tiempo con un valor único Aquí hay un.ncarchivo de ml que crea una nueva dimensión externa (tiempo, con 1 valor: 1041379200) y añade esa dimensión a la variable pic en el archivo llamado A2003001.L3m\_DAY\_PIC\_pic\_4km.nc:
<netcdf xmlns='https://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2'>
<variable name='time' type='int' shape='time' />
<aggregation dimName='time' type='joinNew'>
<variableAgg name='pic'/>
<netcdf location='A2003001.L3m\\_DAY\\_PIC\\_pic\\_4km.nc' coordValue='1041379200'/>
</aggregation>
</netcdf>
Ejemplo #2: Cambiar un valor del tiempo existente A veces la fuente.ncarchivo ya tiene una dimensión del tiempo y el valor del tiempo, pero el valor es incorrecto (para sus propósitos) . Esto.ncEl archivo de ml dice: para el archivo de datos llamado ""19810825230030-NCEI...", para la variable de dimensión"time", establecer el atributo de unidades a ser 'segundos desde 1970-01T00:00:00Z' y establecer el valor de tiempo a ser 367588800.
<netcdf xmlns='https://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2'
location="19810825230030-NCEI-L3C\\_GHRSST-SSTskin-AVHRR\\_Pathfinder-PFV5.3\\_NOAA07\\_G\\_1981237\\_day-v02.0-fv01.0.nc">
<variable name="time">
<attribute name='units' value='seconds since 1970-01-01T00:00:00Z' />
<values>367588800</values>
</variable>
</netcdf>
NetCDFOperadores (NCO)
"Los Operadores de NetCDF (NCO) componen una docena de programas independientes, línea de comandos que toman netCDF\[v3 o v4\],HDF \[v4 o v5\],\[Grib, .bufr,\]y/oDAParchivos como entrada, luego operar (por ejemplo, obtener nuevos datos, computar estadísticas, imprimir, hiperslab, manipular metadatos) y producir los resultados a pantalla o archivos en formatos de texto, binario o netCDF.NCOayuda al análisis de datos científicos redondeados. El estilo shell-command deNCOpermite a los usuarios manipular y analizar archivos de forma interactiva, o con scripts expresivos que eviten algunos entornos de programación de alto nivel". (de laNCOpágina principal) .
Una alternativa aNCOesNcML. La gran diferencia es que el NcML es un sistema para hacer cambios en la marcha (así que los archivos fuente no se alteran) , mientrasNCOse puede utilizar para hacer cambios (o nuevas versiones de) los archivos. AmbosNCOy NcML son muy, muy flexibles y le permiten hacer casi cualquier cambio que pueda pensar en los archivos. Para ambos, puede ser difícil averiguar exactamente cómo hacer lo que usted desea hacer - comprobar la web para ejemplos similares. Ambos son herramientas útiles para la preparación de netCDF yHDFarchivos para uso conERDDAP, en particular, para hacer cambios más allá de loERDDAPEl sistema de manipulación puede hacerlo.
Por ejemplo, puede utilizarNCOpara hacer las unidades de la variable de tiempo consistentes en un grupo de archivos donde no eran consistentes originalmente. O puedes usarNCOpara solicitarscale\_factoryadd\_offseten un grupo de archivos dondescale\_factoryadd\_offsettienen diferentes valores en diferentes archivos fuente. (O, ahora puedes lidiar con esos problemasERDDAP™viaEDDGridFromNcFilesUnpacked, que es una variante deEDDGridFromNcFiles que desempaqueta datos empaquetados y estandariza valores de tiempo a bajo nivel para tratar con archivos de colección diferentesscale\_factors yadd\_offset, o unidades de tiempo diferentes.)
NCOes Software libre y de código abierto que utilizaGPL 3.0licencia.
Ejemplo #1: Hacer que las unidades sean compatibles
EDDGridDeFiles y EDDTable De Archivos insisten en que las unidades para una variable dada sean idénticas en todos los archivos. Si algunos de los archivos son trivialmente (no funcionalmente) diferentes de otros (por ejemplo, unidades de tiempo
"segundos desde 1970-01-01 00:00:00 UTC" versus
"seconds since 1970-01-01T00:00:00Z"Podrías usarNCO'sncatted. cambiar las unidades en todos los archivos para ser idénticos
nco/cazado - una unidad, tiempo, o,c,'segundos desde 1970-01T00:00Z' \*.nc
\[Para muchos problemas como este en... Datasets de archivos, ahora puede utilizarnormalización ¿Qué?para decirERDDAPpara estandarizar los archivos fuente mientras se leenERDDAP.\]
Límites al tamaño de un conjunto de datos
Verás muchas referencias a "2 mil millones" abajo. Más exactamente, es una referencia a 2.147.483.647 (2^31-1) , que es el valor máximo de un entero firmado de 32 bits. En algunos idiomas informáticos, por ejemploJava (queERDDAP™está escrito en) , ese es el tipo de datos más grande que se puede utilizar para muchas estructuras de datos (por ejemplo, el tamaño de un array) .
Para valores de cuerda (por ejemplo, para nombres variables, nombres de atributos, valores de atributos String y valores de datos String) , el número máximo de caracteres por String inERDDAP™- 2 mil millones. Pero en casi todos los casos, habrá problemas pequeños o grandes si una cuerda supera un tamaño razonable (por ejemplo, 80 caracteres para nombres variables y nombres de atributos, y 255 caracteres para la mayoría de valores de atributos String y valores de datos) . Por ejemplo, las páginas web que muestren nombres variables largos serán inversamente anchos y largos nombres de variables serán truncados si exceden el límite del tipo de archivo de respuesta.
Para conjuntos de datos redondeados:
- El número máximoaxisVariable- 2 mil millones. El número máximodataVariable- 2 mil millones. Pero si un conjunto de datos tiene las variables √100, será engorroso para que los usuarios usen. Y si un conjunto de datos tiene un millón de variables, su servidor necesitará mucha memoria física y habrá otros problemas.
- El tamaño máximo de cada dimensión (axisVariable) -2 billones de valores.
- Creo que el número total máximo de células (el producto de todas las dimensiones) es ilimitado, pero puede ser ~9e18.
Para conjuntos de datos tabulares:
- El número máximodataVariable- 2 mil millones. Pero si un conjunto de datos tiene las variables √100, será engorroso para que los usuarios usen. Y si un conjunto de datos tiene un millón de variables, su servidor necesitará mucha memoria física y habrá otros problemas.
- El número máximo de fuentes (por ejemplo, archivos) que puede ser agregado es ~2 mil millones.
- En algunos casos, el número máximo de filas de una fuente individual (por ejemplo, un archivo, pero no una base de datos) - 2 mil millones de filas.
- No creo que haya otros límites.
Para conjuntos de datos tanto redondeados como tabulares, hay algunos límites internos en el tamaño del subconjunto que puede ser solicitado por un usuario en una sola solicitud (a menudo relacionados con √2 billones de algo o ~9e18 de algo) , pero es mucho más probable que un usuario llegue a los límites de tipo de archivo.
- NetCDFversión 3.ncLos archivos se limitan a 2GB bytes. (Si esto es realmente un problema para alguien, házmelo saber: Podría añadir apoyo para elNetCDFversión 3.ncExtensión de 64 bits oNetCDFVersión 4, que aumentaría el límite significativamente, pero no infinitamente.)
- Los navegadores se bloquean después de sólo ~500MB de datos, así queERDDAP™limita la respuesta.htmlTablesolicitudes a ~400MB de datos.
- Muchos programas de análisis de datos tienen límites similares (por ejemplo, el tamaño máximo de una dimensión es a menudo ~2 mil millones de valores) , por lo que no hay razón para trabajar duro para conseguir alrededor de los límites de tipo de archivo específico.
- Los límites de tipo de archivo son útiles porque evitan solicitudes ingenuas para cantidades realmente enormes de datos (por ejemplo, "deme todo este conjunto de datos" cuando el conjunto de datos tiene 20TB de datos) , que tomaría semanas o meses para descargar. Cuanto más tiempo la descarga, más probable será que fallará por una variedad de razones.
- Los límites de tipo de archivo son útiles porque obligan al usuario a tratar con subconjuntos de tamaño razonable (por ejemplo, tratar con un gran conjunto de datos redondeados a través de archivos con datos desde un punto de tiempo cada) .
Cambiar a ACDD-1.3
Nosotros (notablementeGenerarDatasetsXml) actualmente recomendarVersión ACDD 1.3, que fue ratificado a principios de 2015 y que se conoce como "ACDD-1.3" en el atributo de convenciones globales. Prior toERDDAP™versión 1.62 (publicado en junio de 2015) ,ERDDAP™utilizado/recomendado el original, versión 1.0, delNetCDFAttribute Convention for Dataset Discoveryque se denominaba "UnidataDataset Discovery v1.0" en las convenciones y convenciones globalesMetadata\_Conventionsatributos.
Si sus conjuntos de datos utilizan versiones anteriores de ACDD, se recomienda que cambie a ACDD-1.3. No es difícil. ACDD-1.3 es altamente compatible con la versión 1.0. Para cambiar, para todos los conjuntos de datos (SalvoEDDGridFromErddap and EDDTable DeErddap datasets) :
- Eliminar el nuevo mundo deprecatadoMetadata\_Conventionsatributo por adición (o cambiando las existentesMetadata\_Conventionsatributo)
<att name="Metadata\\_Conventions">null</att>
al conjunto de datos global<addAttributes. 2. Si el conjunto de datos tiene un atributo de convenciones en el mundo<addAttributes, cambiar todo "UnidataDataset Discovery v1.0 referencias a "ACDD-1.3". Si el conjunto de datos no tiene un atributo de convenciones en el mundo<addAttributesA continuación, añadir uno que se refiere a ACDD-1.3. Por ejemplo,
<att name="Conventions">COARDS, CF-1.6, ACDD-1.3</att>
3. Si el conjunto de datos tiene un conjunto globalstandard\_name\_vocabularyatributo, por favor cambie el formato del valor a, por ejemplo,
<att name="standard\\_name\\_vocabulary">CF Standard Name Table v65</att>
Si la referencia es a una versión anterior de laCF tabla de nombres estándar. es probablemente una buena idea cambiar a la versión actual (65, como escribimos esto) , ya que los nuevos nombres estándar se añaden a esa tabla con versiones posteriores, pero los nombres estándar antiguos son raramente deprecatados y nunca eliminados. 4. Aunque ACDD-1.0 incluyó atributos globales paracreator\_name,creator\_email,creator\_url,GenerarDatasetsXmlno los añadimos automáticamente hasta algún momentoERDDAP™v1.50. Esta información es importante:
- creator\_namepermite a los usuarios conocer/citar al creador del conjunto de datos.
- creator\_emaille dice a los usuarios la dirección de correo electrónico preferida para ponerse en contacto con el creador del conjunto de datos, por ejemplo si tienen preguntas sobre el conjunto de datos.
- creator\_urlda a los usuarios una manera de averiguar más sobre el creador.
- ERDDAP™utiliza toda esta información al generar documentos de metadatos FGDC e ISO 19115-2/19139 para cada conjunto de datos. Esos documentos son utilizados a menudo por servicios externos de búsqueda.
Por favor, agregue estos atributos al conjunto de datos global<addAttributes.
<att name="creator\\_name">NOAA NMFS SWFSC ERD</att>
<att name="creator\\_email">erd.data@noaa.gov</att>
<att name="creator\\_url">https://www.pfeg.noaa.gov</att>
Eso es. Espero que no haya sido muy difícil.
Zarr
En la versión 2.25ERDDAP™puede leer local Archivos de Zarr utilizandoEDDTableDesdeNcFilesyEDDGridFromNcFiles.
(A agosto de 2019) Podríamos estar fácilmente equivocados, pero aún no estamos convencidos de queZarr, o sistemas similares que rompen archivos de datos en pedazos más pequeños, son grandes soluciones al problema deERDDAP™leer datos almacenados en servicios cloud como Amazon AWS S3. Zarr es una gran tecnología que ha mostrado su utilidad en una variedad de situaciones, no estamos seguros de queERDDAP+S3 será una de esas situaciones. Sobre todo estamos diciendo: antes de apresurarnos a hacer el esfuerzo para almacenar todos nuestros datos en Zarr, vamos a hacer algunas pruebas para ver si en realidad es una mejor solución.
Los problemas con el acceso a datos en la nube son latencia (el retraso para obtener primero datos) y acceso a nivel de archivos (más que acceso a nivel de bloques) . Zarr resuelve el problema de acceso a nivel de archivo, pero no hace nada sobre la latencia. Comparado con sólo descargar el archivo (así se puede leer como un archivo local con acceso a nivel de bloques) , Zarr incluso puede exacerbar el problema de la latencia porque, con Zarr, leer un archivo ahora implica una serie de varias llamadas para leer diferentes partes del archivo (cada uno con su propio lag) . El problema de latencia puede resolverse paralelamente a las solicitudes, pero es una solución de alto nivel, no dependiente de Zarr.
Y con Zarr (como con bases de datos relacionales) , perdemos la comodidad de tener un archivo de datos ser un archivo simple, único que usted puede verificar fácilmente la integridad de, o hacer/descargar una copia de.
ERDDAP™ (de v2) tiene un sistema para mantener un caché local de archivos de una fuente URL (por ejemplo, S3) (véase [<cacheDesde el usuario y<cacheMaxGB titulado] (#cachefromurl) ). Y el nuevo [<nThreads confía] (#Nthreads) debe minimizar el problema de latencia paralelando la recuperación de datos a un alto nivel.<cacheDesde el usuario parece trabajar muy bien para muchos escenarios. (No estamos seguros de lo beneficioso<nThreads confía es sin más pruebas.) Admitimos que no hemos hecho pruebas de tiempo en una instancia AWS con una buena conexión de red, pero hemos probado con éxito con varias fuentes remotas de archivos URL. YERDDAP's<cacheDesde el usuario trabaja con cualquier tipo de archivo de datos (por ejemplo,.nc,.hdf, .csv,.jsonlCSV) , incluso si fuera comprimido externamente (por ejemplo,.gz) , sin cambios en los archivos (por ejemplo, reescribirlas como colecciones de Zarr) .
Es probable que diferentes escenarios favorezcan diferentes soluciones, por ejemplo, sólo necesita leer parte de un archivo una vez (Zarr ganará) , vs. necesidad de leer todo un archivo una vez, vs. necesidad de leer parte o todo un archivo repetidamente (<cacheDesde el usuario ganará).
Sobre todo estamos diciendo: antes de apresurarnos a hacer el esfuerzo para almacenar todos nuestros datos en Zarr, vamos a hacer algunas pruebas para ver si en realidad es una mejor solución.
Lista de conjuntos de datos de tipos
Si necesita ayuda para elegir el tipo de conjunto de datos correcto, consulteElegir el tipo Dataset.
Los tipos de conjuntos de datos se clasifican en dos categorías. (¿Por qué?)
EDDGrid
- EDDGrid Los conjuntos de datos manejan datos redondeados.
- InEDDGriddatasets, variables de datos son arrays multidimensionales de datos.
- Debe haber una variable de eje para cada dimensión. Las variables Axis DEBE especificarse en el orden en que las variables de datos las usen.
- InEDDGridconjuntos de datos, todas las variables de datos (parte) todas las variables del eje. (¿Por qué? ¿Y si no lo hacen?)
- Valores de dimensión clasificados - En todosEDDGridconjuntos de datos, cada dimensión DEBE estar en orden (ascendente o descendente) . Cada uno puede ser colocado irregularmente. No puede haber vínculos. Este es un requisito delCF metadatos standard. Si los valores de cualquier dimensión no están en orden ordenado, el conjunto de datos no se cargará yERDDAP™identificará el primer valor sin surtido en el archivo de registro, bigParentDirectory /logs/log.txt .
Algunas subclases tienen restricciones adicionales (en particular,EDDGridAggregateExistingDimension requiere que la dimensión exterior (izquierda, primera) sea ascendente.
Los valores de dimensión no variados casi siempre indican un problema con el conjunto de datos fuente. Esto ocurre más comúnmente cuando un archivo mal llamado o inapropiado se incluye en la agregación, que conduce a una dimensión de tiempo sin surtir. Para resolver este problema, vea el mensaje de error en elERDDAP™log.txt archivo para encontrar el valor de tiempo ofensivo. A continuación, busque en los archivos fuente para encontrar el archivo correspondiente (o uno antes o uno después) eso no pertenece a la agregación.
- Ver la descripción más completa de laEDDGridmodelo de datos.
- ElEDDGridLos tipos de conjunto de datos son:
- EDDGridDeAudioFilesagrega datos de un grupo de archivos de audio locales.
- EDDGridDeDapmaneja datos redondeados desdeDAPservidores.
- EDDGridDeEDDTablele permite convertir un conjunto de datos tabular en un conjunto de datos redondeado.
- EDDGridFromErddapmaneja datos redondeados desde un control remotoERDDAP.
- EDDGridDe Etoposólo maneja los datos de topografía de ETOPO incorporados.
- EDDGridDeFileses la superclase de todosEDDGridDe... clases de Files.
- EDDGridFromMergeIRFilesagrega datos de un grupo de MergeIR local.gzarchivos.
- EDDGridFromNcFilesdatos agregados de un grupo de localesNetCDF (v3 o v4) .ncy archivos relacionados.
- EDDGridFromNcFilesUnpackedes una variante siEDDGridFromNcFiles que también agrega datos de un grupo de localesNetCDF (v3 o v4) .ncy archivos relacionados, queERDDAP™desempaquetas a bajo nivel.
- EDDGridLonPM180modifica los valores de longitud de un niñoEDDGridpara que estén en el rango -180 a 180.
- EDDGridLon0360modifica los valores de longitud de un niñoEDDGridpara que estén en el rango 0 a 360.
- EDDGridSideBySideagregados dos o másEDDGriddatasets lado a lado.
- EDDGridAggregateExistingDimensionagregados dos o másEDDGriddatasets, cada uno de los cuales tiene una gama diferente de valores para la primera dimensión, pero valores idénticos para las otras dimensiones.
- EDDGridCopiadopuede hacer una copia local de otroEDDGrid's datos y sirve datos de la copia local.
- TodosEDDGriddatasets admiten un ajuste de nThreads, que diceERDDAP™cuántos hilos utilizar al responder a una solicitud. Ver elnTreadsdocumentación para detalles.
EDDTable
- EDDTable datasets manejan datos tabulares.
- Los datos tabulares pueden ser representados como una tabla de bases de datos con filas y columnas. Cada columna (una variable de datos) tiene un nombre, un conjunto de atributos, y almacena sólo un tipo de datos. Cada fila tiene una observación (o grupo de valores relacionados) . La fuente de datos puede tener los datos en una estructura de datos diferente, una estructura de datos más complicada y/o múltiples archivos de datos, peroERDDAP™necesita ser capaz de aplanar los datos fuente en una tabla similar a la base de datos para presentar los datos como conjunto de datos tabulares a los usuarios deERDDAP.
- Ver la descripción más completa de laModelo de datos.
- Los tipos de conjunto de datos EDDTable son:
- EDDTableDesde AllDatasetses un conjunto de datos de alto nivel que tiene información sobre todos los demás conjuntos de datos en suERDDAP.
- EDDTableDesde el aeropuertoagrega datos de archivos de datos ASCII portátiles separados por coma, pestaña, semicolon o espacio.
- EDDTableDeAsciiServicees la superclase de todas las clases de EDDTableDesdeAsciiService...
- EDDTableDesdeAsciiServiceNOSmaneja datos de algunos de losNOAAServicios web NOS.
- EDDTableDesdeAudioFilesagrega datos de un grupo de archivos de audio locales.
- EDDTableDesde AwsXmlFilesagrega datos de un conjunto de la estación meteorológica automática (AWS) Archivos XML.
- EDDTableDesdeCassandramaneja datos tabulares de una tabla Cassandra.
- EDDTableDeColumnarAsciiFilesagrega datos de archivos de datos tabulares ASCII con columnas de datos de ancho fijo.
- EDDTableDeDapSequencemaneja datos tabulares desdeDAPservidores de secuencia.
- EDDTableDesde la base de datosmaneja datos tabulares de una tabla de bases de datos.
- EDDTableDesdeEDDGridle permite crear un conjunto de datos EDDTable desde unEDDGridDataset.
- EDDTableDeErddapmaneja datos tabulares desde un remotoERDDAP.
- EDDTableDesdeFileNamescrea un conjunto de datos de información sobre un grupo de archivos en el sistema de archivos del servidor, pero no sirve datos de dentro de los archivos.
- EDDTableDeFileses la superclase de todas las clases EDDTableDesde...
- EDDTableDesdeHtpGetesERDDAPEs sólo un sistema para la importación de datos y la exportación de datos.
- EDDTableDesdeHyraxArchivos (DEPRECATED) agrega datos de archivos con varias variables con dimensiones compartidas servidas porHyrax OPeNDAPservidor.
- EDDTableDesdeInvalidCRAFilesdatos agregados deNetCDF (v3 o v4) .ncarchivos que utilizan una variante específica, inválida, de la CF DSG Contiguous Ragged Array (CRA) archivos. AunqueERDDAP™soporta este tipo de archivo, es un tipo de archivo inválido que nadie debe comenzar a usar. Grupos que actualmente utilizan este tipo de archivo se alienta encarecidamente a utilizarERDDAP™para generar archivos CF DSG CRA válidos y dejar de usar estos archivos.
- EDDTableDesdeJsonlCSVFilesdatos agregados deJSON Líneas Archivos CSV.
- EDDTableDesdeMultidimNcFilesdatos agregados deNetCDF (v3 o v4) .ncarchivos con varias variables con dimensiones compartidas.
- EDDTableDesdeNcFilesdatos agregados deNetCDF (v3 o v4) .ncarchivos con varias variables con dimensiones compartidas. Está bien seguir utilizando este tipo de conjunto de datos para los conjuntos de datos existentes, pero para nuevos conjuntos de datos recomendamos utilizar EDDTableDesdeMultidimNcFiles.
- EDDTableDesdeNcCFFilesdatos agregados deNetCDF (v3 o v4) .ncarchivos que utilizan uno de los formatos de archivo especificados porCF Geometrías de muestreo discretos (DSG) convenciones. Pero para los archivos usando una de las variantes CF DSG multidimensionales, useEDDTableDesdeMultidimNcFilesen lugar de eso.
- EDDTableDesdeNccsvFilesdatos agregados deNCCSVArchivos ASCII .csv.
- EDDTableDesdenos (DEPRECATED) maneja datos tabulares de servidores XML NOS.
- EDDTableDesde OBISmaneja datos tabulares de servidores OBIS.
- EDDTableDesdeParquetFilesmaneja datos deParquet.
- EDDTableDesdeSOSmaneja datos tabulares desdeSOSservidores.
- EDDTableDeThreddsFiles (DEPRECATED) agrega datos de archivos con varias variables con dimensiones compartidas servidas porTHREDDSOPeNDAPservidor.
- EDDTableDesdeWFSArchivos (DEPRECATED) hace una copia local de todos los datos de unaArcGISMapServerWFSservidor para que los datos puedan ser reservidos rápidamenteERDDAP™usuarios.
- EDDTableAggregateRowspuede hacer un conjunto de datos EDDTable de un grupo de conjuntos de datos EDDTable.
- EDDTableCopypuede hacer una copia local de muchos tipos de conjuntos de datos EDDTable y luego reservar los datos rápidamente de la copia local.
Descripciones detalladas de Tipos de Dataset
EDDGridDeDap
EDDGridDeDap maneja variables de rejilla desdeDAPservidores.
- Recomendamos encarecidamente utilizar elGenerarDatasets Programa Xmlpara hacer un borrador duro deldatasets.xmlpara este conjunto de datos. Puede recopilar la información que necesita para ajustarla o crear su propio XML para unEDDGridDeDap dataset mirando los archivos DDS y DAS del conjunto de datos fuente en su navegador (agregando .das y .dds asourceUrl, por ejemplo, https://thredds1.pfeg.noaa.gov/thredds/dodsC/satellite/BA/ssta/5day.dds ) .
- EDDGridFromDap puede obtener datos de cualquier variable multidimensional de unaDAPservidor de datos. (Anteriormente,EDDGridFromDap se limitó a variables designadas como "grid", pero eso ya no es un requisito.)
- Valores de dimensión clasificados - Los valores de cada dimensión DEBE estar en orden (ascendente o descendente) . Los valores pueden ser espaciados irregularmente. No puede haber vínculos. Este es un requisito delCF metadatos standard. Si los valores de cualquier dimensión no están en orden ordenado, el conjunto de datos no se cargará yERDDAP™identificará el primer valor sin surtido en el archivo de registro, bigParentDirectory /logs/log.txt .
Los valores de dimensión no variados casi siempre indican un problema con el conjunto de datos fuente. Esto ocurre más comúnmente cuando un archivo mal llamado o inapropiado se incluye en la agregación, que conduce a una dimensión de tiempo sin surtir. Para resolver este problema, vea el mensaje de error en elERDDAP™log.txt archivo para encontrar el valor de tiempo ofensivo. A continuación, busque en los archivos fuente para encontrar el archivo correspondiente (o uno antes o uno después) eso no pertenece a la agregación.
EDDGridDeDap esqueleto XML
<dataset type="EDDGridFromDap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
For EDDGridFromDap, this gets the remote .dds and then gets the new
leftmost (first) dimension values. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
</dataset>
EDDGridDeEDDTable
EDDGridDeEDDTable le permite convertir un conjunto de datos tabular EDDTable en unEDDGridDataset redondeado. Recuerda queERDDAP™tratar los conjuntos de datos comoconjuntos de datos redondeados (subclases deEDDGrid) o conjuntos de datos tabulares (subclases de EDDTable) .
- Normalmente, si tiene datos redondeados, acaba de configurar unEDDGridDataset directamente. A veces esto no es posible, por ejemplo, cuando usted tiene los datos almacenados en una base de datos relacional queERDDAP™sólo puede acceder a través de EDDTableDesdeDatabase.EDDGridDeEDDTable clase te permite remediar esa situación.
- Obviamente, los datos en el conjunto de datos EDDTable subyacente deben ser (básicamente) datos redondeados, pero en forma tabular. Por ejemplo, el conjunto de datos EDDTable puede tener datos de CTD: mediciones de corriente hacia el este y hacia el norte, a varias profundidades, en varias ocasiones. Puesto que las profundidades son las mismas en cada momento,EDDGridFromEDDTable puede crear un conjunto de datos rejillado con una dimensión de tiempo y profundidad que acceda a los datos a través del conjunto de datos EDDTable subyacente.
- GenerarDatasets Xml... Recomendamos encarecidamente utilizar elGenerarDatasets Programa Xmlpara hacer un borrador duro deldatasets.xmlpara este conjunto de datos. Puede reunir la información que necesita para mejorar el borrador áspero.
- Fuente Atributos - Como con todos los demás tipos de conjuntos de datos,EDDGridFromTable tiene la idea de que hay fuente globalAtributos ymundialaddAttributes (especificado endatasets.xml) , que se combinan para hacer la combinación global Atributos, que son lo que los usuarios ven. Para fuente globalAtributos,EDDGridFromEDDTable utiliza la combinación global Atributos del conjunto de datos EDDTable subyacente. (Si lo piensas por un minuto, tiene sentido.)
Del mismo modo, para cada unoaxisVariable's ydataVariable'saddAttributes,EDDGridFromEDDTable utiliza la variable combinada Atributos del conjunto de datos EDDTable subyacente como elEDDGridFuente de la variableEDDTableAtributos. (Si lo piensas por un minuto, tiene sentido.)
Como consecuencia, si el EDDTable tiene buenos metadatos,EDDGridFromEDDTable a menudo necesita muy pocoaddAttributesmetadatos... sólo unos pocos tweaks aquí y allá.
-
dataVariables versusaxisVariables... La EDDTable subyacente sólo tienedataVariables. AnEDDGridDeEDDTable dataset tendrá algunosaxisVariables (creado a partir de algunos de los EDDTabledataVariables) y algunosdataVariables (creado del EDDTable restantedataVariables) .GenerarDatasetsXmlhará una suposición de que EDDTabledataVariables should becomeEDDGridDeEDDTableaxisVariables, pero es sólo una suposición. Necesita modificar la salida de GenerateDatasetsXml para especificar quédataVariables will becomeaxisVariables, y en qué orden.
-
axisValues -- No hay nada sobre el EDDTable subyacente para contarEDDGridFromEDDTabla los posibles valores de losaxisVariables en la versión redondeada del conjunto de datos, por lo que debe proporcionar esa información para cadaaxisVariablemediante uno de estos atributos:
- axisValues -- le permite especificar una lista de valores. Por ejemplo, <at name="axisValues"Tipo="DobleList"\ título2, 2.5, 3, 3.5, 4</att confianza Note el uso de unTipo de datosmás la palabra List. Además, el tipo de lista (por ejemplo, doble) , DEBE coincidir con los datos Tipo de la variable en el EDDTable yEDDGridActivos de datos deEDDTable.
- axisValuesStartStrideStop -- le permite especificar una secuencia de valores regularmente espaciados especificando los valores de inicio, paso y parada. Aquí hay un ejemplo que equivale al ejemplo axisValues arriba: <Att name="axisValuesStartStrideStop"Tipo="DobleList"\ título2, 0,5, 4</att confianza De nuevo, note el uso de un tipo de datos de lista. Además, el tipo de lista (por ejemplo, doble) , DEBE coincidir con los datos Tipo de la variable en el EDDTable yEDDGridActivos de datos deEDDTable.
Actualizaciones -- Así como no hay manera deEDDGridFromEDDTable para determinar los valores del eje de la EDDTable inicialmente, no hay una manera confiable paraEDDGridFromEDDTable para determinar desde el EDDTable cuando los valores del eje han cambiado (notablemente, cuando hay nuevos valores para la variable de tiempo) . Actualmente, la única solución es cambiar el atributo axisValues endatasets.xmly volver a cargar el conjunto de datos. Por ejemplo, podrías escribir un script para
- Búsquedadatasets.xmlpara datasetID= elDatasetID " así que usted está trabajando con el conjunto de datos correcto.
- Búsquedadatasets.xmlpara la próxima aparición de
losVariablesSourceName
así que usted está trabajando con la variable correcta. - Búsquedadatasets.xmlpara la próxima aparición de
<att name="axisValuesStartStrideStop" type="doubleList">
Así que sabes la posición de inicio de la etiqueta. 4. Búsquedadatasets.xmlpara la próxima aparición de
</att>
así que conoces la posición final de los valores del eje. 5. Sustitúyase el viejo inicio, estire, detenga valores con los nuevos valores. 6. ContactoBandera URLpara que el conjunto de datos digaERDDAP™para recargar el conjunto de datos.
Esto no es ideal, pero funciona.
- precisión... CuandoEDDGridFromEDDTable responde a la solicitud de datos de un usuario, mueve una fila de datos de la tabla de respuesta EDDTable en laEDDGridRejilla de respuesta. Para ello, tiene que averiguar si los valores "eje" en una fila dada en la tabla coinciden con una combinación de valores de eje en la red. Para los tipos de datos enteros, es fácil determinar si dos valores son iguales. Pero para flotadores y dobles, esto plantea el horrible problema de los números de puntos flotantesno coincide exactamente. (por ejemplo, 0,2 versus 0,199999999999999996) . A (tratar de) tratar con esto,EDDGridFromTable le permite especificar un atributo de precisión para cualquiera de losaxisVariables, que especifica el número total de dígitos decimales que deben ser idénticos.
- Por ejemplo,<att name="precision" type="int"</att confianza
- Para diferentes tipos de variables de datos, hay diferentes valores de precisión predeterminados. Los defectos son generalmente apropiados. Si no lo son, necesita especificar diferentes valores.
- ParaaxisVariables que sontiempo o tiempo Variables de muestreo, el predeterminado es de precisión completa (una coincidencia exacta) .
- ParaaxisVariables que son flotadores, la precisión predeterminada es 5.
- ParaaxisVariables que son dobles, la precisión predeterminada es 9.
- ParaaxisVariables que tienen tipos de datos enteros,EDDGridFromEDDTable ignora el atributo de precisión y siempre utiliza la precisión completa (una coincidencia exacta) .
- ¡Ay! Al hacer la conversión de un trozo de datos tabulares en un trozo de datos redondeados, siEDDGridFromEDDTable no puede igualar un "eje" EDDTable a uno de los esperadosEDDGridDeEDDTable valores de eje,EDDGridDeEDDTable silenciosamente (no error) tira los datos de esa fila de la tabla. Por ejemplo, puede haber otros datos (no en la red) en el conjunto de datos EDDTable. (Y si stride 1, no es obvioEDDGridDeTabla qué valores del eje son los valores deseados y cuáles son los que deben ser saltados debido a la zancada.) Por lo tanto, si los valores de precisión son demasiado altos, el usuario verá valores perdidos en la respuesta de datos cuando existan valores de datos válidos.
Por el contrario, si los valores de precisión se establecen demasiado bajos, EDDTable "eje" valores que no deben coincidirEDDGridDeEDDTable valores de eje (erróneamente) coinciden.
Estos problemas potenciales son horribles, porque el usuario obtiene los datos incorrectos (o valores perdidos) cuando deben obtener los datos adecuados (o al menos un mensaje de error) . Esto no es un defecto.EDDGridDeTabla.EDDGridFromTable no puede resolver este problema. El problema es inherente a la conversión de datos tabulares en datos redondeados (a menos que se puedan hacer otras suposiciones, pero no se pueden hacer aquí) . Depende de ti, elERDDAP™administrador, a prueba tuEDDGridDeEDDTable a fondo para garantizar que los valores de precisión se establezcan para evitar estos problemas potenciales.
brecha
- brecha-- Este es un tipo muy inusual de conjunto de datos. Desde los tipos de consultas que se pueden hacer (manejado por) anEDDGridDataset (relacionados con los rangos y los pasos de losaxisVariables) son muy diferentes de los tipos de consultas que se pueden hacer (manejado por) un conjunto de datos EDDTable (sólo relacionado con los rangos de algunas variables) , el rendimiento deEDDGridFromEDDTable datasets variará mucho dependiendo de la solicitud exacta que se haga y de la velocidad del conjunto de datos EDDTable subyacente. Para solicitudes que tengan un valor de zancada 1,EDDGridFromEDDTable puede pedir a la EDDTable subyacente para un trozo relativamente grande de datos (como si estride=1) y luego tamizar los resultados, manteniendo los datos de algunas filas y eliminando los datos de otros. Si tiene que pasar por muchos datos para obtener los datos que necesita, la solicitud tomará más tiempo para rellenar.
SiEDDGridFromEDDTable puede decir que habrá grandes brechas (con filas de datos no deseados) entre las filas con los datos deseados,EDDGridFromEDDTable puede elegir hacer varias subrequestas a la EDDTable subyacente en lugar de una gran petición, saltando así las filas no deseadas de datos en las grandes brechas. La sensibilidad de esta decisión se controla por la brecha Valor de propiedad tal como se especifica en el<diferenciaThreshold (default=1000 filas de datos fuente) . Posibilidad de configuraciónLa retención de un número menor llevará a la fabricación de conjuntos de datos (en general) más subrepeticiones. Posibilidad de configuraciónLa retención de un número mayor llevará a la fabricación de conjuntos de datos (en general) menos conquistas.
Si la brechaThreshold es demasiado pequeña,EDDGridFromEDDTable funcionará más lentamente porque la parte superior de múltiples solicitudes será mayor que el tiempo ahorrado por obtener algunos datos de exceso. Si la brechaThreshold es demasiado grande,EDDGridFromEDDTable funcionará más lentamente porque tantos datos excedentes serán recuperados de la EDDTable, sólo para ser descartados. (Como los Ricitos de Oro descubrieron, el medio es "justo correcto".) El overhead para diferentes tipos de conjuntos de datos EDDTable varía mucho, por lo que la única manera de conocer el mejor ajuste real para su conjunto de datos es mediante experimentación. Pero no irás demasiado mal pegando al defecto.
Un ejemplo simple es: Imagina unEDDGridDeTabla con sólo unoaxisVariable (tiempo, con un tamaño de 100000) , unodataVariable (temperatura) , y la brecha predeterminadaThreshold de 1000.
- Si un usuario solicita temperatura\[0#58;100\], el paso es 100 por lo que el tamaño de la brecha es 99, que es menos que la brechaThreshold. Así que...EDDGridFromTable hará una sola solicitud a EDDTable para todos los datos necesarios para la solicitud (equivalente a la temperatura\[0:5000\]) y tirar todas las filas de datos que no necesita.
- Si un usuario solicita temperatura\[0:2500:5000\], ese paso es 2500 por lo que el tamaño de la brecha es 2499, que es mayor que la brechaThreshold. Así que...EDDGridFromTable hará solicitudes separadas a EDDTable que son equivalentes a la temperatura\[0\], temperatura\[2500\], temperatura\[5000\].
El cálculo del tamaño de la brecha es más complicado cuando hay varios ejes.
Para cada solicitud de usuario,EDDGridFromEDDTable imprime mensajes de diagnóstico relacionados con esto enlog.txtarchivo.
- Si...<logLevel] (#loglevel) dentrodatasets.xmlse establece a la información, esto imprime un mensaje como \* nOuterAxes=1 de 4 nOuterRequests=22 Si nOuterAxes=0, gapThreshold no fue excedido y sólo una petición será hecha a EDDTable. Si nOuterAxes confía0, gapThreshold fue excedido y nOuterRequests se hará a EDDTable, correspondiente a cada combinación solicitada de los nOuterAxes más izquierdos. Por ejemplo, si el conjunto de datos tiene 4axisVariables ydataVariablecomo hacia el este\[tiempo\]\[latitud\]\[longitud\]\[profundidad\], el más izquierdo (primera) axis variable es tiempo.
- Si<logLevel dentrodatasets.xmlse establece a todos, información adicional se escribe en el archivo log.txt.
EDDGridDeEDDTable esqueleto XML
<dataset type="EDDGridFromEDDTable" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1.
For EDDGridFromEDDTable, this only works if the underlying EDDTable
supports updateEveryNMillis. -->
<gapThreshold>...</gapThreshold> <!-- 0 or 1. The default is 1000. >
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
<dataset>...</dataset> <!-- The underlying source EDDTable dataset. -->
</dataset>
EDD*ERDDAP
EDDGridFromErddap maneja datos redondeados desde un control remotoERDDAP™servidor. EDDTableDeErddap maneja datos tabulares desde un remotoERDDAP™servidor.
- EDDGridFromErddap y EDDTableDesdeErddap se comportan de forma diferente a todos los demás tipos de conjuntos de datos enERDDAP.
- Al igual que otros tipos de conjuntos de datos, estos conjuntos de datos obtienen información sobre el conjunto de datos de la fuente y lo mantienen en memoria.
- Como otros tipos de conjuntos de datos, cuandoERDDAP™búsquedas de conjuntos de datos, muestra el formulario de acceso de datos ( datasetID HTML) , o muestra la forma Hacer un Gráfico ( datasetID .graph) ,ERDDAP™utiliza la información sobre el conjunto de datos que está en memoria.
- EDDGridFromErddap and EDDTable FromErddap son la base paragrids/clusters/federationsdeERDDAPs, que distribuye eficientemente el uso de CPU (principalmente para hacer mapas) , uso de memoria, almacenamiento de conjuntos de datos y uso ancho de banda de un gran centro de datos.
Redirect
- A diferencia de otros tipos de conjuntos de datos, cuandoERDDAP™recibe una solicitud de datos o imágenes de estos conjuntos de datos,ERDDAP redireccionala solicitud al control remotoERDDAP™servidor. El resultado es:
- Esto es muy eficiente (CPU, memoria y ancho de banda) , porque de otro modo
- El compuestoERDDAP™tiene que enviar la solicitud a la otraERDDAP™ (que toma tiempo) .
- El otroERDDAP™tiene que conseguir los datos, reformarlo, y transmitir los datos al compositeERDDAP.
- El compuestoERDDAP™tiene que recibir los datos (usando ancho de banda) , reformat it (usando CPU y memoria) , y transmitir los datos al usuario (usando ancho de banda) . Dirigiendo la solicitud y permitiendo la otraERDDAP™para enviar la respuesta directamente al usuario, el compositeERDDAP™gasta esencialmente no CPU tiempo, memoria o ancho de banda en la solicitud.
- La redireccion es transparente para el usuario independientemente del software cliente (un navegador o cualquier otro software o herramienta de línea de comando) .
- Esto es muy eficiente (CPU, memoria y ancho de banda) , porque de otro modo
- Puedes decirERDDAP™no redirigir ninguna solicitud de usuario estableciendo<redirigir</redirect ratio, pero esto niega la mayoría de las ventajas del ... (notablemente, dispersing la carga en el extremo frontalERDDAP™al mando a distancia/backendERDDAP) .
Suscripciones
Normalmente, cuando unEDDGridFromErddap and EDDTable DeErddap son (re) cargado en tuERDDAP, intentan agregar una suscripción al conjunto de datos remoto a través del control remotoERDDAP's email/URL suscripción sistema. De esa manera, cuando el conjunto de datos remoto cambia, el control remotoERDDAP™contactossetDataset Bandera URLen tuERDDAP™para que el conjunto de datos local sea recargado ASAP y para que el conjunto de datos local esté siempre perfectamente actualizado y mime el conjunto de datos remoto. Así que, la primera vez que esto sucede, debe obtener un correo electrónico solicitando que valide la suscripción. Sin embargo, si el localERDDAP™no puede enviar un correo electrónico o si el remotoERDDAP's email/URL sistema de suscripción no está activo, usted debe enviar el correo electrónico remotoERDDAP™administrador y solicitar que se añada manualmente [<onChange Conf] (#onchange) ...</onChange monedas a todos los conjuntos de datos relevantes para llamar a su datasetsetDataset URL de la bandera. Vea suERDDAP™informe diario para una lista de setDataset URLs de la bandera, pero sólo enviar las paraEDDGridFromErddap y EDDTableDesde conjuntos de datos de Erddap hasta el control remotoERDDAP™administrador.
¿Esto no funciona? ¿Sus conjuntos de datos locales no se mantienen sincronizados con los conjuntos de datos remotos? Varias cosas deben funcionar correctamente para que este sistema funcione para que sus conjuntos de datos permanezcan actualizados. Compruebe cada una de estas cosas en orden:
- TuERDDAP™debe ser capaz de enviar correos electrónicos. Vea la configuración de correo electrónico en su setup.xml.
- En general (pero no siempre) TuERDDAP's<baseUrl confianza y<baseHttpsUrl confianzamust no tiene un número de puerto (por ejemplo: 8080, :8443) . Si lo hacen, use unproxypasspara quitar el puerto del Url.
- En tu configuración.xml,<subscribeToRemoteErddapDatasetilo debe ser establecido a la verdad.
- Cuando tu EDD local... FromErddap dataset es recargado, debe enviar una solicitud al control remotoERDDAP™para suscribirse al conjunto de datos remoto. Mira en log.txt para ver si esto está sucediendo.
- Usted debe obtener un email pidiéndole que valide la solicitud de suscripción.
- Debe hacer clic en el enlace en ese correo electrónico para validar la solicitud de suscripción.
- El control remotoERDDAP™debería decir que la validación fue exitosa. En cualquier momento, puede solicitar un correo electrónico desde el control remotoERDDAP™con una lista de sus suscripciones pendientes y válidas. Ver el formulario remoteErddapBase Url /erddap/subscriptions/list.html .
- Cuando el conjunto de datos remoto cambia (por ejemplo, obtiene datos adicionales) , el control remotoERDDAP™debe tratar de contactar con el flagURL en suERDDAP. No puedes comprobar esto, pero puedes preguntar al administrador del control remotoERDDAP™para comprobar esto.
- TuERDDAP™debe recibir una solicitud para establecer esa bandera. Mira en tu log.txt para "setDatasetFlag.txt?" (s) y ver si hay un mensaje de error asociado con las solicitudes.
- TuERDDAP™debe tratar de volver a cargar ese conjunto de datos (tal vez no inmediatamente, pero ASAP) .
Max actualizado (tiempo) ?
EDDGrid/TablaDeErddap datasets sólo cambia su información almacenada sobre cada conjunto de datos fuente cuando el conjunto de datos fuente es"reload"edy algunos cambios de metadatos (por ejemplo, la variable de tiempoactual\_range) , generando así una notificación de suscripción. Si el conjunto de datos fuente tiene datos que cambian con frecuencia (por ejemplo, nuevos datos cada segundo) y utiliza el"actualizar"sistema para notar cambios frecuentes en los datos subyacentes,EDDGrid/TablaDeErddap no se notificará acerca de estos cambios frecuentes hasta el siguiente conjunto de datos "recargar", por lo que elEDDGrid/TablaDeErddap no será perfectamente actualizado. Puede minimizar este problema cambiando el conjunto de datos fuente<reloadEveryNMinutes confiar a un valor más pequeño (¿60?) para que haya más notificaciones de suscripción para indicarEDDGrid/TablaDeErddap para actualizar su información sobre el conjunto de datos fuente.
O, si su sistema de gestión de datos sabe cuándo el conjunto de datos fuente tiene nuevos datos (por ejemplo, a través de un script que copia un archivo de datos) , y si eso no es súper frecuente (por ejemplo, cada 5 minutos o menos frecuente) , hay una mejor solución:
- No uso<Actualizar EveryNMillis confiar para mantener el conjunto de datos fuente actualizado.
- Establecer el conjunto de datos fuente<reloadEveryNMinutes confía a un número mayor (¿1440?) .
- Que el script contacte con el conjunto de datos fuenteBandera URLjusto después de que copia un nuevo archivo de datos en su lugar.
Esto llevará a que el conjunto de datos fuente sea perfectamente actualizado y que genere una notificación de suscripción, que se enviará a laEDDGrid/TablaDesde el conjunto de datos de Eddap. Eso conducirá a laEDDGrid/TablaDeErddap dataset para estar perfectamente actualizado (bien, dentro de 5 segundos de nuevos datos añadiendo) . Y todo lo que se hará eficientemente (sin recargas innecesarias de conjunto de datos) .
NoaddAttributes,axisVariableodataVariable
A diferencia de otros tipos de conjuntos de datos, EDDTableDesdeErddap yEDDGridFromErddap datasets don't allow global<addAttributes>,<axisVariable> o<dataVariable> secciones endatasets.xmlpara ese conjunto de datos. El problema es que permitir que esas personas conduzcan a incoherencias:
- Digamos que fue permitido y agregó un nuevo atributo global.
- Cuando un usuario le preguntaERDDAP™para los atributos globales, aparecerá el nuevo atributo.
- Pero cuando un usuario pregunta a suERDDAP™para un archivo de datos, suERDDAP™redirige la solicitud a la fuenteERDDAP. QueERDDAP™no es consciente del nuevo atributo. Así que si crea un archivo de datos con metadatos, por ejemplo, un.ncarchivo, los metadatos no tendrán el nuevo atributo.
Hay dos soluciones de trabajo:
- Convince el administrador de la fuenteERDDAP™para hacer los cambios que quieras a los metadatos.
- En lugar de EDDTableDesdeErddap, useEDDTableDeDapSequence. O en lugar deEDDGridFromErddap, useEDDGridDeDap. Esos tipos de EDD le permiten conectarse eficientemente a un conjunto de datos en un remotoERDDAP™ (pero sin redireccionar solicitudes de datos) y te permiten incluir global<addAttributes>,<axisVariable> o<dataVariable> secciones endatasets.xml. Otra diferencia: tendrá que suscribirse manualmente al conjunto de datos remoto, de modo que el conjunto de datos en suERDDAP™será notificado (a través deBandera URL) cuando hay cambios en el conjunto de datos remoto. Así, usted está creando un nuevo conjunto de datos, en lugar de vincularse a un conjunto de datos remoto.
Otras notas
- Por razones de seguridad,EDDGridFromErddap and EDDTable FromErddap no apoyen [<accesible a título] (#accessibleto) tag y no se puede utilizar con conjuntos de datos remotos que requieren iniciar sesión (porque utilizan [<accesible a título] (#accessibleto) ).. SeeERDDAP'ssistema de seguridadpara restringir el acceso a algunos conjuntos de datos a algunos usuarios.
- Empezando conERDDAP™v2.10,EDDGridFromErddap y EDDTableDeErddap apoyan el [<accesibleViaFiles confía] (#accessibleviafiles) tag. A diferencia de otros tipos de conjuntos de datos, el valor predeterminado es cierto, pero los archivos del conjunto de datos serán accesiblesViaFiles sólo si el conjunto de datos fuente también tiene<accesibleViaFiles confiar se establece a la verdad.
- Puedes usar elGenerarDatasets Programa Xmlpara hacer eldatasets.xmlpara este tipo de conjunto de datos. Pero puede hacer estos tipos de conjuntos de datos fácilmente a mano.
EDDGridDeErddap esqueleto XML
- EDDGridDeErddap esqueleto XML dataset es muy sencillo, ya que la intención es imitar el conjunto de datos remoto que ya es adecuado para su uso enERDDAP:
<dataset type="EDDGridFromErddap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<accessibleViaFiles>...</accessibleViaFiles> <!-- 0 or 1, default=true. -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1
For EDDGridFromErddap, this gets the remote .dds and then gets
the new leftmost (first) dimension values. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<redirect>true(default)|false</redirect> <!-- 0 or 1; -->
</dataset>
EDDTableDeErddap esqueleto XML
- El XML esqueleto para un conjunto de datos EDDTableDesdeErddap es muy sencillo, ya que la intención es imitar el conjunto de datos remoto, que ya es adecuado para su uso enERDDAP:
<dataset type="EDDTableFromErddap" datasetID\="..." active\="..." >
<sourceUrl>...</sourceUrl>
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<addVariablesWhere>...</addVariablesWhere> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<redirect>true(default)|false</redirect> <!-- 0 or 1; -->
</dataset>
EDDGridDe Etopo
EDDGridDe Etopo sólo sirve a laETOPO1 Global 1-Minute Gridded Elevation Data Set (Superficie de hielo, cuadrícula registrada, binaria, 2byte int: etopo1\_ice\_g\_i2.zip) que se distribuye conERDDAP.
- Sólo dos.datasetIDs are supported forEDDGridDesdeEtopo, para que pueda acceder a los datos con valores de longitud -180 a 180, o valores de longitud 0 a 360.
- Nunca hay etiquetas sub, ya que los datos ya se describen dentroERDDAP.
- Así que las dos opciones paraEDDGridLos conjuntos de datos de Etopo son (literalmente) :
<!-- etopo180 serves the data from longitude -180 to 180 -->
<dataset type="EDDGridFromEtopo" datasetID="etopo180" />
<!-- etopo360 serves the data from longitude 0 to 360 -->
<dataset type="EDDGridFromEtopo" datasetID="etopo360" />
EDDGridDeFiles
EDDGridDeFiles es la superclase de todosEDDGridDe... clases de Files. No puedes usarEDDGridDesdeFiles directamente. En su lugar, utilice una subclase deEDDGridDesdeFiles para manejar el tipo de archivo específico:
- EDDGridFromMergeIRFilesmaneja datos de la redMergeIR.gzarchivos.
- EDDGridDeAudioFilesagrega datos de un grupo de archivos de audio locales.
- EDDGridFromNcFilesmaneja datos de la redGRIB .grbarchivos,HDF (v4 o v5) .hdfarchivos,.ncmlarchivos, yNetCDF (v3 o v4) .ncarchivos. Esto puede funcionar con otros tipos de archivos (por ejemplo, BUFR) , simplemente no lo hemos probado -- por favor envíenos algunos archivos de muestra si usted está interesado.
- EDDGridFromNcFilesUnpackedes una variante deEDDGridFromNcFiles que maneja datos desde rejillasNetCDF (v3 o v4) .ncy archivos relacionados, queERDDAP™desempaquetas a bajo nivel.
Actualmente no se admiten otros tipos de archivos. Pero generalmente es relativamente fácil añadir soporte para otros tipos de archivos. Póngase en contacto con nosotros si tiene una solicitud. O, si sus datos están en un formato de archivo antiguo que le gustaría alejarse de, recomendamos convertir los archivos a serNetCDFv3.ncarchivos.NetCDFes un formato binario ampliamente compatible, permite el acceso aleatorio rápido a los datos, y ya está soportado porERDDAP.
De Archivos Detalles
La siguiente información se aplica a todas las subclases deEDDGridDeFiles.
agregación de una dimensión existente
Todas las variaciones deEDDGridFromFiles puede agregar datos de archivos locales, donde cada archivo tiene 1 (o más) valores diferentes para el más izquierdo (primera) dimensión, generalmente\[tiempo\], que será agregado. Por ejemplo, las dimensiones pueden ser\[tiempo\]\[altitud\]\[latitud\]\[longitud\], y los archivos pueden tener los datos para uno (o algunos) valor del tiempo (s) por archivo. El conjunto de datos resultante aparece como si todos los datos del archivo se hubieran combinado. Las grandes ventajas de la agregación son:
- El tamaño del conjunto de datos agregado puede ser mucho mayor que un solo archivo puede ser convenientemente (~2GB) .
- Para datos casi en tiempo real, es fácil añadir un nuevo archivo con el último trozo de datos. No tienes que reescribir todo el conjunto de datos.
Los requisitos para la agregación son:
- Los archivos locales no tienen lo mismodataVariables (definida en el conjunto de datosdatasets.xml) . El conjunto de datos tendrá eldataVariables defined indatasets.xml. Si un archivo dado no tiene undataVariable,ERDDAP™añadirá valores perdidos según sea necesario.
- Todo el mundodataVariableDEBE utilizar el mismoaxisVariables/dimensions (definida en el conjunto de datosdatasets.xml) . Los archivos serán agregados basados en el primero (izquierda-más) dimensión, ordenada en orden ascendente.
- Cada archivo MAY tiene datos para uno o más valores de la primera dimensión, pero no puede haber solapamiento entre archivos. Si un archivo tiene más de un valor para la primera dimensión, los valores DEBE clasificarse en orden ascendente, sin v ínculos.
- Todos los archivos DEBE tener exactamente los mismos valores para todas las otras dimensiones. La precisión de las pruebas se determina pormatchAxisNDigits.
- Todos los archivos DEBE tener exactamente el mismounidadesmetadatos para todosaxisVariables ydataVariables. Si esto es un problema, usted puede ser capaz de utilizarNcMLoNCOpara arreglar el problema.
Aggregation via File Names or Global Metadata
Todas las variaciones deEDDGridFromFiles también puede agregar un grupo de archivos añadiendo una nueva izquierda (primera) dimensión, generalmente tiempo, basado en un valor derivado de cada nombre de archivo o del valor de un atributo global que está en cada archivo. Por ejemplo, el nombre de archivo podría incluir el valor de tiempo para los datos en el archivo.ERDDAP™entonces crearía una nueva dimensión del tiempo.
A diferencia de la característica similar en THREDDS,ERDDAP™siempre crea unaxisVariablecon valores numéricos (exigido por la CF) , nunca valores de cuerda (que no están permitidos por CF) . También,ERDDAP™ordenar los archivos en la agregación basado en la numéricaaxisVariablevalor que se asigna a cada archivo, para que la variable axis siempre tenga valores ordenados según lo requerido por CF. El enfoque de THREDDS de hacer un tipo lexicográfico basado en los nombres de los archivos conduce a agregaciones donde los valores del eje no están ordenados (que no está permitido por CF) cuando los nombres de los archivos son diferentes a los derivadosaxisVariablevalores.
Para establecer una de estas agregaciones enERDDAP™, usted definirá una nueva izquierda más (primera) axisVariablecon un seudo especial<sourceNameque diceERDDAP™dónde y cómo encontrar el valor para la nueva dimensión de cada archivo.
- El formato para el pseudosourceNameque obtiene el valor de un nombre de archivo (sólo nombre de archivo.ext) es \\\ fileName, datos Tipo , ExtractoRegex , captureGroupNumber*
- El formato para el pseudosourceNameque obtiene el valor del nombre de la ruta absoluta de un archivo es \\\ pathName, datos Tipo , ExtractoRegex , captureGroupNumber* \[Para esto, el nombre del camino siempre utiliza'/'como el personaje separador del directorio, nunca ''.\]
- El formato para el pseudosourceNameque obtiene el valor de un atributo global es \\\ global: atributo Nombre , datos Tipo , ExtractoRegex , captureGroupNumber*
- Este seudosourceNamela opción funciona diferente de los otros: en lugar de crear una nueva izquierda más (primera) axisVariable, esto sustituye el valor de la corrienteaxisVariablecon un valor extraído del nombre de archivo (sólo nombre de archivo.ext) . El formato es \\\ reemplazar DesdeFileName, datos Tipo , ExtractoRegex , captureGroupNumber*
Las descripciones de las partes que necesita proporcionar son:
- atributo Nombre -- el nombre del atributo global que está en cada archivo y que contiene el valor de la dimensión.
- datos Tipo -- Esto especifica el tipo de datos que se utilizará para almacenar los valores. Ver la lista estándar dedatos TiposqueERDDAP™soportes, excepto que String no está permitido aquí desde variables de eje enERDDAP™No pueden ser variables String.
Hay otros datos pseudoType, timeFormat= cuerda TimeFormat , lo que diceERDDAP™que el valor es un tiempo de Stringunidades adecuadas para tiempos de cuerda. En la mayoría de los casos, el stringTimeFormat que necesita será una variación de uno de estos formatos:
- yyyy-MM-dd'T'HH:mm:ss.SSSZ - que ISO 8601:2004 (E) formato de hora de la fecha. Usted puede necesitar una versión acortada de esto, por ejemplo,yyyy-MM-dd'T'HH:mm:ss oryyyy-MM-dd.
- yyyyyMMddHHmmss.SSS - que es la versión compacta del formato de fecha ISO 8601. Usted puede necesitar una versión acortada de esto, por ejemplo, yyyyyyyMMddHmms o yyyyyyyMMdd.
- M/d/yyyy H:mm:ss.SSS -- que es el formato de la fecha de corte estadounidense. Usted puede necesitar una versión acortada de esto, por ejemplo, M/d/yyyy.
- YyyyyDDDHHmmsSSS - que es el año más el día de cero-pagado del año (por ejemplo, 001 = 1 de enero de 365 = 31 de diciembre en un año siniestro; esto a veces se llama erróneamente la fecha de Julian) . Usted puede necesitar una versión acortada de esto, por ejemplo, yyyyDDD .
Si utiliza este pseudo dataType, agregue esto a la nueva variable<addAttributes"
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
Si desea cambiar todos los valores de tiempo, cambie el valor de tiempo en unidades, por ejemplo, 1970-01-01T12:00:00Z.
- ExtractoRegex -- Este es elexpresión regular (tutorial) que incluye un grupo de captura (entre padres) que describe cómo extraer el valor del nombre de archivo o valor de atributo global. Por ejemplo, dado un nombre de archivo como S19980011998031.L3b\_MO\_CHL.nc, grupo de captura #1, "\dtutorial", en la expresión regular S (\dtutorial) \dtutorial\.L3b.\* capturará los primeros 7 dígitos después de 'S': 1998001.
- capturaGroupNúmero -- Este es el número del grupo de captura (dentro de un par de paréntesis) en la expresión regular que contiene la información de interés. Generalmente es 1, el primer grupo de captura. A veces necesita utilizar grupos de captura para otros fines en el regex, por lo que el importante número de grupo de captura será 2 (el segundo grupo de captura) o 3 (el tercero) , etc.
Un ejemplo completo de unaxisVariableque hace un conjunto de datos agregado con un nuevo eje de tiempo que obtiene los valores de tiempo del nombre de archivo de cada archivo es
<axisVariable>
<sourceName>\\*\\*\\*fileName,timeFormat=yyyyDDD,S(\\d{7})\\.L3m.\\*,1</sourceName>
<destinationName>time</destinationName>
</axisVariable>
Cuando usas los datos pseudo "timeFormat=" Tipo,ERDDAP™añadir 2 atributos a losaxisVariablepara que parezcan venir de la fuente:
<att name="standard\\_name">time</att>
<att name="units">seconds since 1970-01-01T00:00:00Z</att>
Así que en este caso,ERDDAP™creará un nuevo eje llamado"time"con valores dobles (segundos desde 1970-01-01T00:00Z) extrayendo los 7 dígitos después de 'S' y antes de ".L3m" en el nombre de archivo e interpretando aquellos como valores de tiempo formateado como yyyyDDD.
Puede anular el tiempo de base predeterminado (1970-01T00:00:00Z) añadiendo unañadirAtributoque especifica un atributo de unidades diferentes con un tiempo base diferente. Una situación común es: hay grupos de archivos de datos, cada uno con un composite de 1 día de un conjunto de datos de satélite, donde desea que el valor de tiempo sea el mediodía del día mencionado en el nombre de archivo (el tiempo centrado de cada día) y quieren la variablelong\_namepara ser "Tiempo Interno". Un ejemplo que hace esto es:
<axisVariable>
<sourceName>\\*\\*\\*fileName,timeFormat=yyyyDDD,S(\\d{7})\\.L3m.\\*,1</sourceName>
<destinationName>time</destinationName>
<addAttributes>
<att name="long\\_name">Centered Time</att>
<att name="units">seconds since 1970-01-01T12:00:00Z</att>
</addAttributes>
</axisVariable>
Note hours=12 en el tiempo base, que añade 12 horas en relación con el tiempo base original de 1970-01T00:00:00Z.
Un ejemplo completo de unaxisVariableque hace un conjunto de datos agregado con un nuevo eje "corrido" (con valores int) que obtiene los valores de ejecución del atributo global "runID" en cada archivo (con valores como "r17\_global", donde 17 es el número de ejecución) es
<axisVariable>
<sourceName>\\*\\*\\*global:runID,int,(r|s)(\\d+)\\_global,2</sourceName>
<destinationName>run</destinationName>
<addAttributes>
<att name="ioos\\_category">Other</att>
<att name="units">count</att>
</addAttributes>
</axisVariable>
Observe el uso del grupo de captura número 2 para capturar los dígitos que ocurren después de 'r' o 's', y antes de "\_global". Este ejemplo también muestra cómo añadir atributos adicionales (por ejemplo,ioos\_categoryy unidades) a la variable del eje.
Archivos comprimidos externamente
-
Datasets that are subsets ofEDDGridDeFiles y EDDTable FromFiles puede servir datos directamente desde archivos de datos comprimidos externamente, incluyendo.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2, y archivos .Z.
-
¡Esto funciona sorprendentemente bien!
En la mayoría de los casos, la desaceleración relacionada con los archivos de datos pequeños y medianos es menor. Si necesita conservar el espacio de disco, animamos fuertemente a usar esta función, especialmente para archivos antiguos que rara vez se acceden. -
¡Ahorra dinero!
Esta es una de las pocas características enERDDAP™que te ofrece la oportunidad de ahorrar mucho dinero (aunque al costo de un rendimiento ligeramente reducido) . Si la relación de compresión es, por ejemplo, 6:1 (a veces será mucho más alto) , entonces los archivos de datos del conjunto de datos sólo necesitarán 1/6 el espacio del disco. Entonces tal vez usted puede conseguir con 1 RAID (de un tamaño determinado) en lugar de 6 RAIDS (del mismo tamaño) . Eso es un gran ahorro de costos. Con suerte, la capacidad de comprimir algunos archivos en una colección (¿Los mayores?) y no comprime a otros (¿Los nuevos?) , y para cambiar eso en cualquier momento, vamos a minimizar el inconveniente para comprimir algunos de los archivos (acceso más lento) . Y si la opción es entre almacenar los archivos en cinta (y sólo accesible a petición, después de un retraso) vs almacenarlos comprimidos en un RAID (y accesiblesERDDAP) , entonces hay una gran ventaja para utilizar la compresión para que los usuarios se interrumpan (relativamente relativamente) acceso rápido a los datos. Y si esto puede salvarte de comprar un RAID adicional, esta característica puede ahorrarte unos $30,000. -
Para todosEDDGridDeFiles subclases, si los archivos de datos tienen una extensión indicando que son archivos comprimidos externamente (Actualmente:.tgz,.tar.gz,.tar.gzip,.gz,.gzip,.zip,.bz2, o Z) ,ERDDAP™descomprimir los archivos al directorio cache del conjunto de datos cuando los lea (si ya no están en el cache) . Lo mismo es cierto para el archivo binario (por ejemplo,.nc) subclases de EDDTableDesdeFiles.
-
Para EDDTableDeFiles subclases para archivos no binarios (por ejemplo, .csv) , los archivos de datos con una extensión indicando que son archivos comprimidos externamente serán descomprimidos en la marcha como se lee el archivo.
-
NECESIDADES: Si el tipo de archivo comprimido externamente utilizado (por ejemplo,.tgzo.zip) soporta más de 1 archivo dentro del archivo comprimido, el archivo comprimido debe contener sólo 1 archivo.
-
NECESIDADES: Esta característica supone que el contenido de los archivos comprimidos externamente no cambia, de modo que se pueda reutilizar un archivo descomprimido en caché. Si algunos o todos los archivos de datos de un conjunto de datos se cambian a veces, no comprime esos archivos. Esto es consistente con el uso común, ya que la gente normalmente no comprime archivos que a veces necesitan cambiar.
-
<fileNameRegex Para hacer este trabajo, el conjunto de datos<fileNameRegex confiar debe coincidir con los nombres de los archivos comprimidos. Obviamente, regexes como .\coincidirá con todos los nombres de archivos. Si especifica un tipo de archivo específico, por ejemplo, .\\.nc, entonces usted necesita modificar el reex para incluir la extensión de compresión también, por ejemplo, .\ \.nc\.gz(si todos los archivos serán algo*.nc.gzarchivos) .
-
Está bien si su conjunto de datos incluye una mezcla de archivos comprimidos y no comprimidos. Esto puede ser útil si usted cree que algunos archivos (por ejemplo, archivos más antiguos) se utilizará menos a menudo y por lo tanto sería útil guardar el espacio del disco comprimirlos. Para hacer este trabajo, el<fileNameRegex confiar debe coincidir con los nombres de los archivos comprimidos y no comprimidos, por ejemplo, .\o .\\.nc (|\.gz) (donde el grupo de captura al final de eso especifica que.gzes opcional.
-
Está bien si comprime o descomprime archivos específicos en la colección en cualquier momento. Si el conjunto de datos no utiliza [<actualizar EveryNMillis confiar] (#Updateeverynmillis) , establecer el conjunto de datosbanderapara decirERDDAP™para volver a cargar el conjunto de datos y así observar los cambios. Curiosamente, podría utilizar diferentes algoritmos de compresión y configuraciones para diferentes archivos en el mismo conjunto de datos (por ejemplo,.bz2para archivos raramente usados,.gzpara archivos no utilizados a menudo, y ninguna compresión para archivos usados con frecuencia) , sólo asegúrese de que el regex soporta todas las extensiones de archivo que están en uso, por ejemplo, .\*\.nc (|\.gz|\.bz2) .
-
Por supuesto, ratios de compresión y velocidades para los diferentes algoritmos de compresión varían con el archivo fuente y la configuración (por ejemplo, nivel de compresión) . Si desea optimizar este sistema para sus archivos, haga una prueba de los diferentes métodos de compresión con sus archivos y con una gama de configuraciones de compresión. Si quieres un bien fiable (no necesariamente el mejor) configuración, le recomendamos un pocogzip (.gz) .gzipno hace el archivo comprimido más pequeño (Es razonablemente cercano) , pero comprime el archivo muy rápido y (más importante paraERDDAP™usuarios) descomprime el archivo muy rápidamente. Además,gzipsoftware viene estándar con cada instalación Linux y Mac OS y está disponible para Windows a través de herramientas gratuitas como 7Zip y complementos Linux como Git Bash. Por ejemplo, para comprimir un archivo fuente en el.gzversión del archivo (mismo nombre de archivo, pero con.gzapéndice) , uso (en Linux, Mac OS, y Git Bash)
gzip sourceName
Para descomprimir un.gzvolver al archivo original, utilizar Gunzip sourceName.gz
Para comprimir cada uno de los archivos fuente en el directorio y sus subdirectorios, recursivamente, use gzip-r directorName
Para descomprimir cada uno de los.gzficheros en directorio y sus subdirectorios , recursivamente, use gunzip -r directorName
-
ADVERTENCIA: No compre externamente (gzip) archivos que ya están comprimidos internamente! Muchos archivos ya tienen datos comprimidos internamente. Si túgzipestos archivos, los archivos resultantes no serán mucho más pequeños (<5%) yERDDAP™perderá tiempo descomprimiéndolos cuando necesite leerlos. Por ejemplo:
- archivos de datos: por ejemplo,.nc4, y.hdf5 archivos: Algunos archivos usan compresión interna; algunos no. Cómo decir: las variables comprimidas tienen atributos "\_ChunkSize". También, si un grupo de rejillas.nco.hdfLos archivos son todos los tamaños diferentes, es probable que estén comprimidos internamente. Si son del mismo tamaño, no están comprimidos internamente.
- archivos de imagen: por ejemplo, .gif, .jpg y .png
- archivos de audio: por ejemplo, .mp3, y .ogg.
- archivos de vídeo: por ejemplo, .mp4, .ogv, y .webm.
Un caso desafortunado: los archivos de audio .wav son enormes y no están comprimidos internamente. Sería agradable comprimir (gzip) pero generalmente no deberías porque si lo haces, los usuarios no podrán reproducir los archivos comprimidos en su navegador.
-
Caso de prueba: compresión (congzip) un conjunto de datos con 1523.ncarchivos.
- Los datos en los archivos fuente fueron escasos (muchos valores perdidos) .
- El espacio total de disco pasó de 57 GB antes de la compresión a 7 GB después.
- Una solicitud de un montón de datos desde 1 punto de tiempo es<1 s antes y después de la compresión.
- Una solicitud para 1 punto de datos para 365 puntos de tiempo (la peor situación) pasó de 4 s a 71 s.
Para mí eso es un intercambio razonable para cualquier conjunto de datos, y ciertamente para conjuntos de datos que son usados infrecuentemente.
-
Compresión interna versus externa: Comparado con la compresión de archivo interna ofrecida por.nc4 y 4.hdf5 archivos,ERDDAP's acercamiento para archivos binarios comprimidos externamente tiene ventajas y desventajas. La desventaja es: por una vez leído de una pequeña parte de un archivo, la compresión interna es mejor porqueEDDGridDeFiles sólo necesita descomprimir un par de pedazos (s) del archivo, no todo el archivo. Pero...ERDDAP's acercamiento tiene algunas ventajas:
- ERDDAP™soporta la compresión de todos los tipos de archivos de datos (binario y no binario, por ejemplo,.nc3 y Csv) no sólo.nc4 y 4.hdf4.
- Si la mayor parte de un archivo necesita ser leído más de una vez en un corto período de tiempo, entonces ahorra tiempo para descomprimir el archivo una vez y leerlo muchas veces. Esto sucede enERDDAP™cuando un usuario utiliza Make-A-Graph para el conjunto de datos y hace una serie de pequeños cambios en el gráfico.
- La capacidad de tener archivos comprimidos y no comprimidos en la misma colección, le permite más control sobre qué archivos están comprimidos y que no son. Y este control añadido viene sin realmente modificar el archivo fuente (ya que puede comprimir un archivo con por ejemplo,.gzy luego descomprimirlo para obtener el archivo original) .
- La capacidad de cambiar en cualquier momento si un archivo dado es comprimido y cómo se comprimió (diferentes algoritmos y configuraciones) le da más control sobre el rendimiento del sistema. Y puede recuperar fácilmente el archivo original sin complicaciones en cualquier momento.
Aunque ningún enfoque es un ganador en todas las situaciones, está claro queERDDAP's capacidad de servir datos de archivos comprimidos externamente hace que la compresión externa sea una alternativa razonable a la compresión interna ofrecida por.nc4 y 4.hdf5. Eso es significativo dado que la compresión interna es una de las principales razones por las que la gente decide utilizar.nc4 y 4.hdf5.
Caché descomprimido
ERDDAP™hace una versión descomprimida de cualquier binario comprimido (por ejemplo,.nc) archivo de datos cuando necesita leer el archivo. Los archivos descomprimidos se guardan en el directorio del dataset bigParentDirectory /decomprimido/ . Los archivos descomprimidos que no se han utilizado recientemente serán eliminados para liberar espacio cuando el tamaño de archivo acumulativo es √10GB. Puedes cambiarlo estableciendo<descomprimidoCacheMaxGB (default=10) en conjuntos de datos Xml.xml, por ejemplo,
<decompressedCacheMaxGB>40</decompressedCacheMaxGB>
Además, los archivos descomprimidos que no se hayan utilizado en los últimos 15 minutos serán eliminados al comienzo de cada recarga de conjunto de datos principal. Puedes cambiarlo estableciendo<descomprimidoCacheMaxMinutesOld (default=15) en conjuntos de datos Xml.xml, por ejemplo,
<decompressedCacheMaxMinutesOld>60</decompressedCacheMaxMinutesOld>
Los números más grandes son agradables, pero el tamaño acumulativo de los archivos descomprimidos puede causar bigParentDirectory para escapar del espacio de disco, que causa problemas graves.
- Porque descomprimir un archivo puede tomar una cantidad significativa de tiempo (0.1 a 10 segundos) , los conjuntos de datos con archivos comprimidos pueden beneficiarse de establecer el conjunto de datos [<nThreads confía] (#Nthreads) ajuste a un número mayor (¿2? ¿3? ¿4?) . Los inconvenientes a números aún mayores (¿Por ejemplo, 5? ¿6? ¿7?) están disminuyendo las rentabilidades y que la solicitud de un usuario puede entonces utilizar un alto porcentaje de los recursos del sistema, lo que reduce significativamente el procesamiento de las solicitudes de otros usuarios. Por lo tanto, no hay un ajuste ideal de nThreads, sólo diferentes consecuencias en diferentes situaciones con diferentes configuraciones.
Valores de dimensión clasificados
Los valores de cada dimensión DEBE estar en orden (ascendente o descendente, excepto para el primero (izquierda-más) dimensión que debe ser ascendente) . Los valores pueden ser espaciados irregularmente. No puede haber ningún vínculo. Este es un requisito delCF metadatos standard. Si los valores de cualquier dimensión no están en orden ordenado, el conjunto de datos no se cargará yERDDAP™identificará el primer valor sin surtido en el archivo de registro, bigParentDirectory /logs/log.txt .
Los valores de dimensión no variados casi siempre indican un problema con el conjunto de datos fuente. Esto ocurre más comúnmente cuando un archivo mal llamado o inapropiado se incluye en la agregación, que conduce a una dimensión de tiempo sin surtir. Para resolver este problema, vea el mensaje de error en elERDDAP™log.txt archivo para encontrar el valor de tiempo ofensivo. A continuación, busque en los archivos fuente para encontrar el archivo correspondiente (o uno antes o uno después) eso no pertenece a la agregación.
Directores
Los archivos MAY se encuentran en un directorio, o en un directorio y sus subdirectorios (recursivamente) . Si hay un gran número de archivos (por ejemplo,) , el sistema operativo (y asíEDDGridDeFiles) funcionará mucho más eficientemente si almacena los archivos en una serie de subdirectorios (uno por año, o uno por mes para conjuntos de datos con archivos muy frecuentes) , por lo que nunca hay un gran número de archivos en un directorio dado.
<cacheDesde el usuario
TodosEDDGridDeFiles y todos los datasets EDDTableDeFiles soporta un conjunto de etiquetas que dicenERDDAP™para descargar y mantener una copia de todos los archivos de un conjunto de datos remoto, o un caché de unos pocos archivos (descargado según sea necesario) . Esto puede ser muy útil. Ver elcache Documentación de Url.
Remote Directories and HTTP Range Solicita
(AKA Byte Serving, Byte Range Solicitudes, Aceptar-Rangeshttpheader)
EDDGridFromNcFiles, EDDTableDesdeMultidimNcFiles, EDDTableDesdeNcFiles y EDDTableDesdeNcCFFiles, puede a veces servir datos de.ncarchivos en servidores remotos y acceso a través de HTTP si el servidor admiteByte Servingmediante solicitudes de rango HTTP (el mecanismo HTTP para servir byte) . Esto es posible porque netcdf-java (queERDDAP™usos para leer.ncarchivos) admite la lectura de datos remotos.ncarchivos a través de solicitudes de rango HTTP.
¡No hagas esto! Es terriblemente ineficiente y lento. En su lugar, use el [<cacheDesde el sistema de usuario] (#cachefromurl) .
AccesoERDDAP™conjuntos de datos como archivos mediante solicitudes de rango byte -- Flipping this around, given that you can (en teoría) pensar en un conjunto de datosERDDAP™como un gigante.ncarchivo por pendiente ".nc"a la base OPenDAPURL para un conjunto de datos dado (por ejemplo, https://myserver.org/erddap/griddap/datasetID.nc y también añadiendo una ?query después de eso para especificar un subset) , es quizás razonable preguntar si puede utilizar netcdf-java,Ferret, o algún otroNetCDFsoftware cliente para leer datos a través de HTTP Range Solicitudes desdeERDDAP. La respuesta es no, porque no hay realmente un enorme ".nc"archivo. Si quieres hacer esto, haz una de estas opciones:
- Uso(OPeN)DAPsoftware cliente para conectarse a los servicios de griddap ofrecidos porERDDAP. Eso es lo queDAP (y asíERDDAP) fue diseñado para. Es muy eficiente.
- O, descargar el archivo fuente (s) de la"files"sistema (o un archivo de subconjunto a través de.nc? query) a su computadora y utilizar netcdf-java,Ferret, o algún otroNetCDFsoftware cliente para leer (Ahora) archivo local (s) .
Información de archivos en espera
Cuando unaEDDGridDesdeFiles dataset se carga por primera vez,EDDGridFromFiles lee información de todos los archivos pertinentes y crea tablas (una fila para cada archivo) con información sobre cada archivo válido y cada "bad" (diferentes o nulos) archivo.
- Las tablas también se almacenan en el disco, comoNetCDFv3.ncarchivos en bigParentDirectory /dataset/ last2CharsOfDatasetID / datasetID / en los archivos nombrados: dirTable.nc (que contiene una lista de nombres de directorio únicos) , archivo Cuadro.nc (que sostiene la tabla con la información de cada archivo válido) , BadFiles.nc (que sostiene la tabla con la información de cada archivo malo) .
- Para acelerar el acceso a unEDDGridDeFiles dataset (pero a expensas de utilizar más memoria) , puedes usar
true
para decirERDDAP™para mantener una copia de las tablas de información del archivo en memoria.
- La copia de las tablas de información de archivos en disco también es útil cuandoERDDAP™es cerrado y reiniciado: ahorraEDDGridDesdeFiles de tener que volver a leer todos los archivos de datos.
- Cuando se recarga un conjunto de datos,ERDDAP™sólo necesita leer los datos en nuevos archivos y archivos que han cambiado.
- Si un archivo tiene una estructura diferente de los otros archivos (por ejemplo, un tipo de datos diferente para una de las variables, o un valor diferente para el "unidades"atributo") ,ERDDAPañade el archivo a la lista de archivos "malos". La información sobre el problema con el archivo será escrita al bigParentDirectory /logs/log.txt file.
- Usted nunca debe tener que borrar o trabajar con estos archivos. Una excepción es: si todavía está haciendo cambios en el conjunto de datosdatasets.xmlconfiguración, es posible que desee eliminar estos archivos para forzarERDDAP™para releer todos los archivos ya que los archivos serán leídos/interpretados de manera diferente. Si alguna vez necesita borrar estos archivos, puede hacerlo cuandoERDDAP™está corriendo. (Entonces pon un arma.banderapara recargar el conjunto de datos lo antes posible.) Sin embargo,ERDDAP™generalmente nota que eldatasets.xmlla información no coincide con el archivo Tabla información y elimina automáticamente las tablas de archivos.
- Si quieres animarERDDAP™para actualizar la información del conjunto de datos almacenado (por ejemplo, si acaba de agregar, eliminar o cambiar algunos archivos al directorio de datos del conjunto de datos) , utilizar elSistema de banderafuerzaERDDAP™para actualizar la información del archivo cached.
Solicitudes de manejo
Cuando se procesa la solicitud de datos de un cliente,EDDGridFromFiles puede buscar rápidamente en la tabla con la información de archivo válida para ver qué archivos tienen los datos solicitados.
Actualización de la información de archivo en caché
Cada vez que se recarga el conjunto de datos, se actualiza la información del archivo caché.
- El conjunto de datos se vuelve a cargar periódicamente según lo determinado por el<reloadEveryNMinutes confiar en la información del conjunto de datosdatasets.xml.
- El conjunto de datos se recarga lo antes posible cuando sea posibleERDDAP™detecta que has añadido, eliminado,touch'd (para cambiar el último archivo Tiempo modificado) , o cambió un archivo de datos.
- El conjunto de datos se recargará lo antes posible si utiliza elSistema de bandera.
Cuando se recarga el conjunto de datos,ERDDAP™compara los archivos disponibles actualmente a las tablas de información de archivos caché. Los nuevos archivos se leen y se añaden a la tabla de archivos válida. Los archivos que ya no existen se eliminan de la tabla de archivos válida. Los archivos donde ha cambiado el tiempo de archivo son leídos y su información está actualizada. Las nuevas tablas reemplazan las viejas tablas en memoria y en disco.
Archivos malos
La tabla de archivos malos y las razones por las que los archivos fueron declarados mal (archivo dañado, variables desaparecidas, etc.) es enviado por correo electrónico al correo electrónico Todo Para correo electrónico (Probablemente tú) cada vez que se recarga el conjunto de datos. Usted debe reemplazar o reparar estos archivos lo antes posible.
Variables desaparecidas
Si algunos de los archivos no tienen algunosdataVariables definido en el conjunto de datosdatasets.xmlChuck, está bien. CuandoEDDGridDesdeFiles lee uno de esos archivos, actuará como si el archivo tuviera la variable, pero con todos los valores perdidos.
Problemas FTP/Advice
Si usted FTP nuevos archivos de datos aERDDAP™servidorERDDAP™está corriendo, hay la posibilidad de queERDDAP™se recargará el conjunto de datos durante el proceso FTP. ¡Pasa más a menudo de lo que podrías pensar! Si sucede, el archivo parece ser válido (tiene un nombre válido) , pero el archivo aún no es válido. SiERDDAP™Intenta leer datos de ese archivo inválido, el error resultante hará que el archivo se añada a la tabla de archivos inválidos. Esto no es bueno. Para evitar este problema, utilice un nombre de archivo temporal cuando FTP'ing el archivo, por ejemplo, ABC2005.nc\_TEMP . Luego, la prueba de archivoNameRegex (véase infra) indicará que este no es un archivo relevante. Después de que el proceso FTP esté completo, vuelva a llamar el archivo al nombre correcto. El proceso de renombramiento hará que el archivo sea relevante en un instante.
"0 archivos" Mensaje de error
Si corresGenerarDatasetsXmloDasDds, o si intenta cargar unaEDDGridDesde...ERDDAP™, y recibe un mensaje de error de "0 archivos" indicando queERDDAP™encontrados 0 archivos coincidentes en el directorio (cuando usted piensa que hay archivos coincidentes en ese directorio) :
- Compruebe que los archivos realmente están en ese directorio.
- Compruebe la ortografía del nombre del directorio.
- Revisa el archivoNameRegex. Es realmente, muy fácil cometer errores con regexes. Para fines de prueba, prueba el regex .\* que debe coincidir con todos los nombres de archivo. (Mira esto.documentación de regexyregex tutorial.)
- Compruebe que el usuario que está ejecutando el programa (por ejemplo, user=tomcat (?) para Tomcat/ERDDAP) tiene permiso 'leer' para esos archivos.
- En algunos sistemas operativos (por ejemplo, SELinux) y dependiendo de la configuración del sistema, el usuario que ejecutó el programa debe tener permiso 'leer' para toda la cadena de directorios que conducen al directorio que tiene los archivos.
EDDGridDeFiles esqueleto XML
- El esqueleto XML para todosEDDGridDeFiles subclases es:
<dataset type="EDDGridFrom...Files" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
EDDGridFromFiles subclasses, this uses Java's WatchDirectory system
to notice new/deleted/changed files quickly and efficiently. -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<fileDir>...</fileDir> <-- The directory (absolute) with the
data files. -->
<recursive>true|false</recursive> <!-- 0 or 1. Indicates if
subdirectories of fileDir have data files, too. -->
<pathRegex>...</pathRegex> <!-- 0 or 1. Only directory names which
match the pathRegex (default=".\") will be accepted. -->
<fileNameRegex>...</fileNameRegex> <-- 0 or 1. A
regular expression (tutorial) describing valid data
file names, for example, ".\\.nc" for all .nc files. -->
<accessibleViaFiles>true|false(default)</accessibleViaFiles>
<!-- 0 or 1 -->
<metadataFrom>...</metadataFrom> <-- The file to get
metadata from ("first" or "last" (the default) based on file's
lastModifiedTime). -->
<fileTableInMemory>...</fileTableInMemory> <!-- 0 or 1 (true or
false (the default)) -->
<cacheFromUrl>...</cacheFromUrl> <!-- 0 or 1 -->
<cacheSizeGB>...</cacheSizeGB> <!-- 0 or 1 -->
<addAttributes>...</addAttributes> <!-- 0 or 1 -->
<axisVariable>...</axisVariable> <!-- 1 or more -->
<dataVariable>...</dataVariable> <!-- 1 or more -->
</dataset>
EDD*DeAudioFiles
EDDGridDeAudioFiles y EDDTableDesdeAudioFiles datos agregados de una colección de archivos de audio locales. (Estos primeros aparecieronERDDAP™v1.82.) La diferencia es queEDDGridFromAudioFiles trata los datos como conjunto de datos multidimensional (generalmente con 2 dimensiones:\[inicio de archivo Hora\]y\[superada Tiempo dentro de un archivo\]) , mientras que EDDTableDesdeAudioFiles trata los datos como datos tabulares (generalmente con columnas para el archivo startTime, el elapsedTime con el archivo, y los datos de los canales de audio) .EDDGridFromAudioFiles requiere que todos los archivos tengan el mismo número de muestras, por lo que si eso no es cierto, debe utilizar EDDTableDesdeAudioFiles. De lo contrario, la elección del tipo de EDD es totalmente su elección. Una ventaja de EDDTableDesdeAudioFiles: puede agregar otras variables con otra información, por ejemplo,stationID, tipo de estación. En ambos casos, la falta de una variable de tiempo unificada hace más difícil trabajar con los datos de estos tipos de EDD, pero no había una buena manera de configurar una variable de tiempo unificada.
Mira las superclases de esta clase,EDDGridDeFilesyEDDTableDeFiles, para información general sobre cómo funciona esta clase y cómo utilizarla.
Recomendamos encarecidamente utilizar elGenerarDatasets Programa Xmlpara hacer un borrador duro deldatasets.xmlpara este conjunto de datos. Como los archivos de audio no tienen metadatos aparte de la información relacionada con la codificación de los datos de sonido, tendrá que editar la salida de GenerateDatasets Xml para proporcionar información esencial (por ejemplo, título, resumen,creator\_name, institución, historia) .
Detalles:
- Hay un gran número de formatos de archivo de audio. Actualmente,ERDDAP™puede leer datos de la mayoría de archivos .wav y .au. Actualmente no puede leer otros tipos de archivos de audio, por ejemplo, .aiff o .mp3. Si necesita soporte para otros formatos de archivo de audio u otras variantes de .wav y .au, por favor envíe un correo electrónico a su solicitud a Chris. John en Noaa.gov. O, como una solución que puede utilizar ahora mismo, puede convertir sus archivos de audio en PCM\_ SIGNED (para datos enteros) o PCM\_FLOAT (para datos de puntos flotantes) .wav archivos para queERDDAP™puede trabajar con ellos.
- Actualmente,ERDDAP™puede leer archivos de audio con lo queJava's AudioFormat class calls PCM\_FLOAT, PCM\_SIGNED, PCM\_UNSIGNED, ALAW y ULAW encodings.ERDDAP™convierte valores PCM\_UNSIGNED (por ejemplo, 0 a 255) en valores firmados (por ejemplo, -128 a 128) reorganizando los bits en los valores de datos.ERDDAP™convierte ALAW y ULAW codificados desde su formato byte codificado nativo en corto (int16) valores. DesdeJavaquiere bigEndian=true data,ERDDAP™reorganiza los bytes de datos almacenados con bigEndian=false (pequeño endian) para leer correctamente los valores. Para todas las demás codificaciones (PCM) ,ERDDAP™lee los datos como es.
- CuandoERDDAP™lee datos de archivos de audio, convierte los metadatos de audio disponibles del archivo en atributos globales. Esto siempre incluirá (con valores de muestra mostrados)
Cantar audioBigEndian "false"; //true o false audio int Canales 1; Grabación de audioIncoding "PCM\_SIGNED"; audioFrameRate 96000.0; //por segundo int audioFrameSize 2; //# de bytes de datos por marco audio flotanteSampleRate 96000.0; //por segundo int audioSampleSizeInBits 16; //# de bits por canal por muestra
ParaERDDAP's propósitos, un marco es sinónimo de una muestra, que es los datos para un punto en el tiempo. Los atributos enERDDAP™tendrá la información que describe los datos como estaba en los archivos fuente.ERDDAP™a menudo han cambiado esto mientras que la lectura de los datos, por ejemplo, PCM\_UNSIGNED, ALAW y ULAW se convierten los datos codificados a PCM\_SIGNED, y bigEndian=false data se convierte en bigEndian=true data (que es cómoJavaquiere leerlo) . Al final, los valores de los datosERDDAP™siempre será elPCM-encodedValores de datos (es decir, simples muestras digitalizadas de la onda de sonido) .
- CuandoERDDAP™lee datos de archivos de audio, lee todo el archivo.ERDDAP™puede leer hasta alrededor de 2 mil millones de muestras por canal. Por ejemplo, si la tasa de muestra es de 44.100 muestras por segundo, 2 mil millones de muestras se traducen a unos 756 minutos de datos de sonido por archivo. Si tiene archivos de audio con más de esta cantidad de datos, necesita romper los archivos en pedazos más pequeños para queERDDAP™puede leerlos.
- Porque...ERDDAP™lee archivos de audio completos,ERDDAP™debe tener acceso a una gran cantidad de memoria para trabajar con grandes archivos de audio. SeeERDDAP's configuración de memoria. De nuevo, si esto es un problema, una solución que se puede utilizar ahora mismo es romper los archivos en pedazos más pequeños para queERDDAP™puede leerlos con menos memoria.
- Algunos archivos de audio fueron escritos incorrectamente.ERDDAP™hace un pequeño esfuerzo para tratar estos casos. Pero en general, cuando hay un error,ERDDAP™lanzará una Excepción (y rechazar ese archivo) o (si el error es indetectable) leer los datos (pero los datos serán incorrectos) .
- ERDDAP™no revisa ni altera el volumen del sonido. Idealmente, los datos de audio enteros se escalan para utilizar toda la gama del tipo de datos.
- Los archivos de audio y los reproductores de audio no tienen sistema para los valores perdidos (-999 o Float.NaN) . Así que los datos de audio no deberían tener ningún valor perdido. Si faltan valores (por ejemplo, si necesita alargar un archivo de audio) , use una serie de 0's que se interpretará como silencio perfecto.
- CuandoERDDAP™lee los datos de archivos de audio, siempre crea una columna llamada Tiempo con el tiempo para cada muestra, en segundos (almacenados como dobles) , relativa a la primera muestra (que se asigna Tiempo=0,0 s) . ConEDDGridDesdeAudioFiles, esto se convierte en la variable eje del Tiempo transcurrido.
- EDDGridFromAudioFiles requiere que todos los archivos tengan el mismo número de muestras. Así que si eso no es cierto, debe utilizar EDDTableDesdeAudioFiles.
- ParaEDDGridDesdeAudioFiles, te recomendamos que establezcas [<dimensionValoresInMemory confianza] (#dimensionvaluesinmemory) a falso (como es recomendado por GenerateDatasets Xml) , porque la dimensión del tiempo a menudo tiene un gran número de valores.
- ParaEDDGridDesdeAudioFiles, casi siempre debe utilizar elEDDGridSistema FromFiles paraAggregation via Nombres del archivo, casi siempre extrayendo la fecha de inicio de la grabación Hora de los nombres de archivo. Por ejemplo,
<sourceName>\\*\\*\\*fileName,"timeFormat=yyyyMMdd'\\_'HHmmss",aco\\_acoustic\\.(\\[0-9\\]{8}\\_\\[0-9\\]{6})\\.wav,1</sourceName>
GenerarDatasets Xml animará esto y te ayudará con esto.
- Para EDDTableDesdeAudioFiles, casi siempre debe utilizar el sistema EDDTableDeFiles para\\\*fileName pseudosourceNamespara extraer información del nombre del archivo (casi siempre la fecha de inicio Tiempo para la grabación) y promover que sea una columna de datos. Por ejemplo,
<sourceName>\\*\\*\\*fileName,aco\\_acoustic\\.(\\[0-9\\]{8}\\_\\[0-9\\]{6})\\.wav,1</sourceName>
El formato de tiempo debe ser especificado como el atributo de las unidades:<att name= "units"</att confianza
EDDGridFromMergeIRFiles
EDDGridFromMergeIRFiles datos agregados de datos locales,MergeIRarchivos, que son de losTropical Rainfall Measuring Mission (TRMM) , que es una misión conjunta entre la NASA y el Organismo de Exploración Aeroespacial del Japón (JAXA) . Merge Los archivos IR se pueden descargar desdeNASA.
EDDGridFromMergeIRFiles.java was written and contributed to theERDDAP™proyecto de Jonathan Lafite y Philippe Makowski de R.Tech Engineering (licencia: copyrighted open source) .
EDDGridDesdeMergeIRFiles es un poco inusual:
- EDDGridFromMergeIRFiles admite archivos de datos de código comprimido o no comprimido, en cualquier combinación, en el mismo conjunto de datos. Esto le permite, por ejemplo, comprimir archivos antiguos a los que rara vez se accede, pero descomprimir nuevos archivos que a menudo se acceden. O puede cambiar el tipo de compresión del original. Z, por ejemplo,.gz.
- Si tiene versiones comprimidas y sin comprimir de los mismos archivos de datos en el mismo directorio, asegúrese de que<fileNameRegex confía para tu conjunto de datos coincide con los nombres de archivo que quieres que coincida y no coincide con los nombres de archivo que no quieres que coincida.
- Los archivos de datos de origen no comprimido deben tener ninguna extensión de archivo (i.e., no "." en el nombre de archivo) .
- Los archivos de datos de código comprimido deben tener una extensión de archivo, peroERDDAP™determina el tipo de compresión al inspeccionar el contenido del archivo, no mirando la extensión de archivo (por ejemplo, ".Z") . Los tipos de compresión soportados incluyen "gz", "bzip2", "xz", "lzma", "snappy-raw", "snappy-framed", "pack200", y "z". CuandoERDDAP™lee archivos comprimidos, se descomprime en la marcha, sin escribir a un archivo temporal.
- Todos los archivos de datos de origen deben utilizar el sistema original de nombres de archivos: es decir, merg\_ YYYYYMMDDHH \_4km-pixel (Donde YYYYYMMDDHH indica el tiempo asociado con los datos en el archivo) , más una extensión de archivo si el archivo está comprimido.
Mira la superclase de esta clase,EDDGridDeFiles, para información general sobre cómo funciona esta clase y cómo utilizarla.
Recomendamos encarecidamente utilizar elGenerarDatasets Programa Xmlpara hacer un borrador duro deldatasets.xmlpara este conjunto de datos. Puedes editarlo para ajustarlo.
EDDGridFromNcFiles
EDDGridFromNcFiles agrega datos de locales, redondeados,GRIB .grb y .grb2archivos,HDF (v4 o v5) .hdfarchivos,.ncmlarchivos,NetCDF (v3 o v4) .ncarchivos, yZarrarchivos (a la versión 2.25) . Los archivos Zarr tienen un comportamiento ligeramente diferente y requieren el archivoNameRegex o la rutaRegex para incluir "zarr".
Esto puede funcionar con otros tipos de archivos (por ejemplo, BUFR) No lo hemos probado... por favor envíenos algunos archivos de muestra.
- Para archivos GRIB,ERDDAP™hará un archivo de índice .gbx la primera vez que lee cada archivo GRIB. Así que los archivos GRIB deben estar en un directorio donde el "usuario" que corrió Tomcat tiene permiso de lectura y escritura.
- Mira la superclase de esta clase,EDDGridDeFiles, para información sobre cómo funciona esta clase y cómo utilizarla.
- Empezando conERDDAP™v2.12,EDDGridFromNcFiles yEDDGridFromNcFiles Unpacked puede leer datos de "estructuras" en.nc4 y 4.hdf4 archivos. Para identificar una variable que es de una estructura, la<sourceName■ debe utilizar el formato: fullStructureName | memberName , por ejemplo grupo1/myStruct|myMember.
- Recomendamos encarecidamente utilizar elGenerarDatasets Programa Xmlpara hacer un borrador duro deldatasets.xmlpara este conjunto de datos. Puedes editarlo para ajustarlo.
Grupos en Archivos Nc Gridded
Los archivos Netcdf4 pueden contener grupos. ERDDAP™sólo hace un conjunto de datos de las variables en un grupo y todos sus grupos padres. Puede especificar un nombre específico de grupo en GenerateDatasets Xml (omitir el slash que sigue) , o utilizar "" para tener GenerarDatasets Búsqueda Xml todos los grupos para las variables que usan las más dimensiones, o usan "\[root\]"para tener GenerateDatasets sólo busque variables en el grupo raíz.
Lo primero que GenerateDatasetsXml hace para este tipo de conjunto de datos después de responder las preguntas es imprimir la estructura similar al ncdump del archivo de muestra. Así que si entras unas cuantas respuestas rápidas para el primer bucle a trav és de GenerateDatasets Xml, al menos podrás ver siERDDAP™puede leer el archivo y ver qué dimensiones y variables están en el archivo. Entonces usted puede dar mejores respuestas para el segundo bucle a través de GenerateDatasetsXml.
EDDGridFromNcFilesUnpacked
EDDGridFromNcFilesUnpacked es una variante deEDDGridFromNcFilesque agrega datos de datos locales, redondeadosNetCDF (v3 o v4) .ncy archivos relacionados. La diferencia es que esta clase desempaqueta cada archivo de datos antesEDDGridDesdeFiles mira los archivos:
- Desempaqueta variables que están empaquetadas conscale\_factory/oadd\_offset.
- Convierte \_FillValue ymissing\_valuevalores para ser de NaN (o MAX\_VALUE para tipos de datos enteros) .
- Convierte valores de tiempo y tiempos a"seconds since 1970-01-01T00:00:00Z".
La gran ventaja de esta clase es que proporciona una manera de lidiar con diferentes valores descale\_factor,add\_offset, \_FillValue,missing\_value, o unidades de tiempo en diferentes archivos fuente en una colección. De lo contrario, tendría que usar una herramienta comoNcMLoNCOpara modificar cada archivo para eliminar las diferencias para que los archivos puedan ser manejadosEDDGridDe NcFiles. Para que esta clase funcione correctamente, los archivos deben seguir los estándares CF para los atributos relacionados.
- Si intenta hacer unEDDGridFromNcFiles Desempaquetado de un grupo de archivos con los que usted había intentado anteriormente y no usóEDDGridFromNcFiles, cd to bigParentDirectory /dataset/ last2Letters / datasetID / Donde last2Letters es las últimas 2 letras dedatasetID, y eliminar todos los archivos en ese directorio.
- Empezando conERDDAP™v2.12,EDDGridFromNcFiles yEDDGridFromNcFiles Unpacked puede leer datos de "estructuras" en.nc4 y 4.hdf4 archivos. Para identificar una variable que es de una estructura, la<sourceName■ debe utilizar el formato: fullStructureName | memberName , por ejemplo grupo1/myStruct|myMember.
- Recomendamos encarecidamente utilizar elGenerarDatasets Programa Xmlpara hacer un borrador duro deldatasets.xmlpara este conjunto de datos. Puedes editarlo para ajustarlo.
Los archivos Netcdf4 pueden contener grupos. Seeesta documentación.
Lo primero que GenerateDatasetsXml hace para este tipo de conjunto de datos después de responder las preguntas es imprimir la estructura similar al ncdump del archivo de muestra antes Está desempaquetado. Así que si entras unas cuantas respuestas rápidas para el primer bucle a través de GenerateDatasets Xml, al menos podrás ver siERDDAP™puede leer el archivo y ver qué dimensiones y variables están en el archivo. Entonces usted puede dar mejores respuestas para el segundo bucle a través de GenerateDatasetsXml.
EDDGridLonPM180
EDDGridLonPM180 modifica los valores de longitud de un niño (anexo) EDDGriddataset que tiene algunos valores de longitud superior a 180 (por ejemplo, 0 a 360) para que estén en el rango -180 a 180 (Longitud Plus o menos 180, por lo tanto el nombre) .
- Esto proporciona una manera de hacer conjuntos de datos que tienen valores de longitud superiores a 180 en / conOGCservicios (por ejemploWMSservidor enERDDAP) , desde todosOGCservicios requieren valores de longitud dentro de -180 a 180.
- Trabajar cerca de una discontinuidad causa problemas, independientemente de si la discontinuidad está en longitud 0 o en longitud 180. Este tipo de conjunto de datos le permite evitar esos problemas para todos, ofreciendo dos versiones del mismo conjunto de datos: uno con valores de longitud en el rango 0 a 360 (¿"Pacífico"?) , uno con valores de longitud en el rango -180 a 180 (¿"Atlanticentric"?) .
- Para conjuntos de datos infantiles con todos los valores de longitud superiores a 180, todos los nuevos valores de longitud son simplemente 360 grados inferiores. Por ejemplo, un conjunto de datos con valores de longitud de 180 a 240 se convertiría en un conjunto de datos con valores de longitud de -180 a -120.
- Para conjuntos de datos infantiles que tienen valores de longitud para todo el globo (aproximadamente 0 a 360) , el nuevo valor de longitud se reorganizará para ser (aproximadamente) -180 a 180: Los valores originales de 0 a casi 180 son invariables. Los valores originales de 180 a 360 se convierten a -180 a 0 y se desplazan al comienzo de la matriz de longitud.
- Para conjuntos de datos infantiles que abarcan 180 pero no cubren el globo,ERDDAP™inserta valores perdidos según sea necesario para hacer un conjunto de datos que cubre el mundo. Por ejemplo, un conjunto de datos infantil con valores de longitud de 140 a 200 se convertiría en un conjunto de datos con valores de longitud de -180 a 180. Los valores infantiles de 180 a 200 se convertirían en -180 a -160. Se insertarían nuevos valores de longitud de -160 a 140. Los valores correspondientes de datos serán \_FillValues. Los valores del niño de 140 a casi 180 serían invariables. La inserción de valores perdidos puede parecer extraño, pero evita varios problemas que resultan de tener valores de longitud que saltan de repente (por ejemplo, de -160 a 140) .
- InGenerarDatasetsXml, hay un especial "tipo de semana",EDDGridLonPM180DeErddapCatalog, que le permite generar eldatasets.xmlparaEDDGridLonPM180 conjuntos de datos de cada uno de losEDDGriddatasets in anERDDAPque tienen valores de longitud superiores a 180. Esto facilita ofrecer dos versiones de estos conjuntos de datos: el original, con valores de longitud en el rango 0 a 360, y el nuevo conjunto de datos, con valores de longitud en el rango -180 a 180.
El conjunto de datos del niño dentro de cadaEDDGridLonPM180 dataset será unEDDGridFromErddap dataset que apunta al conjunto de datos original. El nuevo conjunto de datosdatasetIDserá el nombre del conjunto de datos original más "\_LonPM180". Por ejemplo,
<dataset type="EDDGridLonPM180" datasetID="erdMBsstdmday\\_LonPM180" active="true">
<dataset type="EDDGridFromErddap" datasetID="erdMBsstdmday\\_LonPM180Child">
<!-- SST, Aqua MODIS, NPP, 0.025 degrees, Pacific Ocean, Daytime
(Monthly Composite) minLon=120.0 maxLon=320.0 -->
<sourceUrl>https://coastwatch.pfeg.noaa.gov/erddap/griddap/erdMBsstdmday
</sourceUrl>
</dataset>
</dataset>
Ponga elEDDGridDataset LonPM180 infra el conjunto de datos original endatasets.xml. Eso evita algunos problemas posibles.
Alternativamente, puede reemplazar elEDDGridDeErddap conjunto de datos infantil con el conjunto de datos originaldatasets.xml. Entonces, sólo habrá una versión del conjunto de datos: la que tiene valores de longitud dentro de -180 a 180. Desalentamos esto porque hay momentos en que cada versión del conjunto de datos es más conveniente.
- Si ofrece dos versiones de un conjunto de datos, por ejemplo, uno con longitud 0 a 360 y uno con longitud -180 a 180:
- Puede utilizar el opcional [<accesible ViaWMS■false</accesible ViaWMS> (#accessibleviawms) con el conjunto de datos 0-360 para deshabilitar por la fuerzaWMSservicio para ese conjunto de datos. Entonces, sólo la versión LonPM180 del conjunto de datos será accesible a través deWMS.
- Hay un par de maneras de mantener el conjunto de datos LonPM180 actualizado con cambios en el conjunto de datos subyacente:
- Si el conjunto de datos del niño es unEDDGridDeErddap dataset que hace referencia a un conjunto de datos en el mismoERDDAP™, el conjunto de datos LonPM180 tratará de suscribirse directamente al conjunto de datos subyacente para que siempre esté actualizado. Las suscripciones directas no generan emails pidiéndole validar la suscripción - la validación debe hacerse automáticamente.
- Si el conjunto de datos del niño no es unEDDGridDeErddap dataset que está en el mismoERDDAP™, el conjunto de datos LonPM180 intentará utilizar el sistema de suscripción regular para suscribirse al conjunto de datos subyacente. Si tiene el sistema de suscripción en suERDDAP™encendido, usted debe conseguir emails pidiéndole que valide la suscripción. Por favor, hazlo.
- Si tiene el sistema de suscripción en suERDDAP™apagado, el conjunto de datos LonPM180 puede tener metadatos obsoletos hasta que se vuelva a cargar el conjunto de datos LonPM180. Así que si el sistema de suscripción está apagado, debe establecer el [<reload EveryNMinutes confía] (#reloadeverynminutes) establecer el conjunto de datos LonPM180 a un número menor, de modo que sea más probable que se produzcan cambios en el conjunto de datos infantil antes.
EDDGridEsqueleto LonPM180 XML
<dataset type="EDDGridLonPM180" datasetID\="..." active\="..." >
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
EDDGridFromDap, this gets the remote .dds and then gets the new
leftmost (first) dimension values. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<dataset>...</dataset> <!-- The child EDDGrid dataset. -->
</dataset>
EDDGridLon0360
EDDGridLon0360 modifica los valores de longitud de un niño (anexo) EDDGriddataset que tiene algunos valores de longitud inferior a 0 (por ejemplo, -180 a 180) para que estén en el rango 0 a 360 (por lo tanto el nombre) .
- Trabajar cerca de una discontinuidad causa problemas, independientemente de si la discontinuidad está en longitud 0 o en longitud 180. Este tipo de conjunto de datos le permite evitar esos problemas para todos, ofreciendo dos versiones del mismo conjunto de datos: uno con valores de longitud en el rango -180 a 180 (¿"Atlanticentric"?) . uno con valores de longitud en el rango 0 a 360 (¿"Pacífico"?) ,
- Para conjuntos de datos infantiles con todos los valores de longitud inferiores a 0, todos los nuevos valores de longitud son simplemente 360 grados más altos. Por ejemplo, un conjunto de datos con valores de longitud de -180 a -120 se convertiría en un conjunto de datos con valores de longitud de 180 a 240.
- Para conjuntos de datos infantiles que tienen valores de longitud para todo el globo (aproximadamente -180 a 180) , el nuevo valor de longitud se reorganizará para ser (aproximadamente) 0 a 360: Los valores originales -180 a 0 se convierten a 180 a 360 y se desplazan al final de la matriz de longitud. Los valores originales de 0 a casi 180 son invariables.
- Para conjuntos de datos infantiles que abarcan lon=0 pero no cubren el globo,ERDDAP™inserta valores perdidos según sea necesario para hacer un conjunto de datos que cubre el mundo. Por ejemplo, un conjunto de datos infantil con valores de longitud de -40 a 20 se convertiría en un conjunto de datos con valores de longitud de 0 a 360. Los valores infantiles de 0 a 20 serían invariables. Se introducirían nuevos valores de longitud de 20 a 320. Los valores correspondientes de datos serán \_FillValues. Los valores infantiles de -40 a 0 se convertirían en 320 a 360. La inserción de valores perdidos puede parecer extraño, pero evita varios problemas que resultan de tener valores de longitud que saltan de repente (por ejemplo, de 20 a 320) .
- InGenerarDatasetsXml, hay un especial "tipo de semana",EDDGridLon0360Desde ErddapCatalog, que te permite generar eldatasets.xmlparaEDDGridLon0360 datasets de cada uno de losEDDGriddatasets in anERDDAPque tienen valores de longitud superiores a 180. Esto facilita ofrecer dos versiones de estos conjuntos de datos: el original, con valores de longitud en el rango 0 a 360, y el nuevo conjunto de datos, con valores de longitud en el rango -180 a 180.
El conjunto de datos del niño dentro de cadaEDDGridLon0360 dataset será unEDDGridFromErddap dataset que apunta al conjunto de datos original. El nuevo conjunto de datosdatasetIDserá el nombre del conjunto de datos original más "\_Lon0360". Por ejemplo,
<dataset type="EDDGridLon0360" datasetID="erdMBsstdmday\\_Lon0360" active="true">
<dataset type="EDDGridFromErddap" datasetID="erdMBsstdmday\\_Lon0360Child">
<!-- SST, Aqua MODIS, NPP, 0.025 degrees, Pacific Ocean, Daytime
(Monthly Composite) minLon=-40.0 maxLon=20.0 -->
<sourceUrl>https://coastwatch.pfeg.noaa.gov/erddap/griddap/erdMBsstdmday
</sourceUrl>
</dataset>
</dataset>
Ponga elEDDGridConjunto de datos Lon0360 infra el conjunto de datos original endatasets.xml. Eso evita algunos problemas posibles.
Alternativamente, puede reemplazar elEDDGridDeErddap conjunto de datos infantil con el conjunto de datos originaldatasets.xml. Entonces, sólo habrá una versión del conjunto de datos: la que tiene valores de longitud dentro de 0 a 360. Desalentamos esto porque hay momentos en que cada versión del conjunto de datos es más conveniente.
- Si ofrece dos versiones de un conjunto de datos, por ejemplo, uno con longitud 0 a 360 y uno con longitud -180 a 180:
- Puede utilizar el opcional [<accesible ViaWMS■false</accesible ViaWMS> (#accessibleviawms) con el conjunto de datos 0 a 360 para deshabilitar por la fuerzaWMSservicio para ese conjunto de datos. Entonces, sólo la versión -180 a 180 del conjunto de datos será accesible a través deWMS.
- Hay un par de maneras de mantener el conjunto de datos Lon0360 actualizado con cambios en el conjunto de datos subyacente:
- Si el conjunto de datos del niño es unEDDGridDeErddap dataset que hace referencia a un conjunto de datos en el mismoERDDAP™, el conjunto de datos Lon0360 intentará suscribirse directamente al conjunto de datos subyacente para que siempre esté actualizado. Las suscripciones directas no generan emails pidiéndole validar la suscripción - la validación debe hacerse automáticamente.
- Si el conjunto de datos del niño no es unEDDGridDeErddap dataset que está en el mismoERDDAP™, el conjunto de datos Lon0360 intentará utilizar el sistema de suscripción regular para suscribirse al conjunto de datos subyacente. Si tiene el sistema de suscripción en suERDDAP™encendido, usted debe conseguir emails pidiéndole que valide la suscripción. Por favor, hazlo.
- Si tiene el sistema de suscripción en suERDDAP™apagado, el conjunto de datos Lon0360 puede tener metadatos obsoletos hasta que se vuelva a cargar el conjunto de datos Lon0360. Así que si el sistema de suscripción está apagado, debe establecer el [<reload EveryNMinutes confía] (#reloadeverynminutes) establecer el conjunto de datos Lon0360 a un número menor, de modo que sea más probable que se produzcan cambios en el conjunto de datos infantil antes.
EDDGridEsqueleto Lon0360 XML
<dataset type="EDDGridLon0360" datasetID\="..." active\="..." >
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<updateEveryNMillis>...</updateEveryNMillis> <!-- 0 or 1. For
EDDGridFromDap, this gets the remote .dds and then gets the new
leftmost (first) dimension values. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<dataset>...</dataset> <!-- The child EDDGrid dataset. -->
</dataset>
EDDGridSideBySide
EDDGridSideBySide agregados dos o másEDDGridconjuntos de datos (los niños) lado a lado.
- El conjunto de datos resultante tiene todas las variables de todos los conjuntos de datos infantiles.
- El conjunto de datos de los padres y todos los conjuntos de datos de los niños DEBE tener diferentesdatasetIDs. Si algún nombre en una familia es exactamente el mismo, el conjunto de datos no se cargará (con el mensaje de error que los valores del eje agregado no están en orden) .
- Todos los niños DEBE tener los mismos valores de origenaxisVariables\[1+\] (por ejemplo, latitud, longitud) . La precisión de las pruebas se determina pormatchAxisNDigits.
- Los niños pueden tener diferentes valores de origenaxisVariables\[0\] (por ejemplo, tiempo) , pero son generalmente lo mismo.
- El conjunto de datos padre parece tener todos losaxisVariables\[0\]valores fuente de todos los niños.
- Por ejemplo, esto le permite combinar un conjunto de datos fuente con el u-componente de un vector y otro conjunto de datos fuente con el v-componente de un vector, por lo que los datos combinados pueden ser servidos.
- Los niños creados por este método se mantienen en privado. No son conjuntos de datos accesibles por separado (por ejemplo, por solicitudes de datos del cliente o porarchivos de bandera) .
- Los metadatos y ajustes globales para el padre provienen de los metadatos y ajustes globales para el primer niño.
- Si hay una excepción al crear el primer hijo, el padre no será creado.
- Si hay una excepción al crear otros niños, esto envía un correo electrónico a email (según se especifica ensetup.xml) y continúa con los otros niños.
EDDGridSideBySide esqueleto XML
<dataset type="EDDGridSideBySide" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<dataset>...</dataset> <!-- 2 or more -->
</dataset>
EDDGridAggregateExistingDimension
EDDGridAggregateExistingDimension agregados dos o másEDDGriddatasets cada uno de los cuales tiene una gama diferente de valores para la primera dimensión, pero valores idénticos para las otras dimensiones.
- Por ejemplo, un conjunto de datos infantil podría tener 366 valores (para 2004) para la dimensión del tiempo y otro niño podría tener 365 valores (para 2005) para la dimensión del tiempo.
- Todos los valores para todas las otras dimensiones (por ejemplo, latitud, longitud) DEBE ser idéntico para todos los niños. La precisión de las pruebas se determina pormatchAxisNDigits.
- Valores de dimensión clasificados - Los valores de cada dimensión DEBE estar en orden (ascendente o descendente) . Los valores pueden ser espaciados irregularmente. No puede haber vínculos. Este es un requisito delCF metadatos standard. Si los valores de cualquier dimensión no están en orden ordenado, el conjunto de datos no se cargará yERDDAP™identificará el primer valor sin surtido en el archivo de registro, bigParentDirectory /logs/log.txt .
Los valores de dimensión no variados casi siempre indican un problema con el conjunto de datos fuente. Esto ocurre más comúnmente cuando un archivo mal llamado o inapropiado se incluye en la agregación, que conduce a una dimensión de tiempo sin surtir. Para resolver este problema, vea el mensaje de error en elERDDAP™log.txt archivo para encontrar el valor de tiempo ofensivo. A continuación, busque en los archivos fuente para encontrar el archivo correspondiente (o uno antes o uno después) eso no pertenece a la agregación.
- El conjunto de datos de los padres y el conjunto de datos de los niños DEBE tener diferentesdatasetIDs. Si algún nombre en una familia es exactamente el mismo, el conjunto de datos no se cargará (con el mensaje de error que los valores del eje agregado no están en orden) .
- Actualmente, el conjunto de datos infantil DEBE ser unEDDGridFromDap dataset y MUST tienen los valores más bajos de la dimensión agregada (generalmente los valores de tiempo más antiguos) . Todos los demás niños DEBE ser casi idénticos conjuntos de datos (diferenciando sólo en los valores de la primera dimensión) y son especificados porsourceUrl.
- El conjunto de datos agregado obtiene sus metadatos del primer niño.
- ElGenerarDatasets Programa Xmlpuede hacer un borrador duro deldatasets.xmlpara unaEDDGridAggregateExistingDimension basado en un conjunto de archivos servidos por unHyraxo servidor de THREDDS. Por ejemplo, utilice esta entrada para el programa (el "/1988" en la URL hace que el ejemplo funcione más rápido) :
EDDType? EDDGridAggregateExistingDimension
Server type (hyrax, thredds, or dodsindex)? hyrax
Parent URL (for example, for hyrax, ending in "contents.html";
for thredds, ending in "catalog.xml")
? https://opendap.jpl.nasa.gov/opendap/ocean\\_wind/ccmp/L3.5a/data/
flk/1988/contents.html
File name regex (for example, ".\\*\\.nc")? month.\\*flk\\.nc\\.gz
ReloadEveryNMinutes (for example, 10080)? 10080
Puedes usar el resultado<sourceUrletiquetas de usuario o eliminarlos y descomponer el<sourceUrl√ tag (para que los nuevos archivos sean notados cada vez que se recarga el conjunto de datos.
EDDGridAggregateExistingDimension skeleton XML
<dataset type="EDDGridAggregateExistingDimension" datasetID\="..."
active\="..." >
<dataset>...</dataset> <!-- This is a regular EDDGridFromDap dataset
description child with the lowest values for the aggregated
dimensions. -->
<sourceUrl>...</sourceUrl> <!-- 0 or many; the sourceUrls for
other children. These children must be listed in order of
ascending values for the aggregated dimension. -->
<sourceUrls serverType="..." regex="..." recursive="true"
pathRegex\=".\"
>https://someServer/someDirectory/someSubdirectory/catalog.xml</sourceUrls>
<!-- 0 or 1. This specifies how to find the other children,
instead of using separate sourceUrl tags for each child. The
advantage of this is: new children will be detected each time
the dataset is reloaded. The serverType must be "thredds",
"hyrax", or "dodsindex". An example of a regular expression (regex) (tutorial) is .\\.nc
recursive can be "true" or "false".
Only directory names which match the
<pathRegex>
(default=".\*") will be accepted.
A thredds catalogUrl MUST include "/thredds/catalog/".
An example of a thredds catalogUrl is
https://thredds1.pfeg.noaa.gov/thredds/catalog/Satellite/aggregsatMH/
chla/catalog.xml
An example of a hyrax catalogUrl is
https://opendap.jpl.nasa.gov/opendap/allData/ccmp/L3.5a/monthly/
flk/1988/contents.html
An example of a dodsindex URL is
https://opendap.jpl.nasa.gov/opendap/GeodeticsGravity/tellus/L3/mascon/RL06/JPL/v02/CRI/netcdf/contents.html
(Note the "OPeNDAP logo at the top of the page.)
When these children are sorted by filename, they must be in
order of ascending values for the aggregated dimension. -->
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<nThreads>...</nThreads> <!-- 0 or 1 -->
<dimensionValuesInMemory>...</dimensionValuesInMemory> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
</dataset>
EDDGridCopiado
EDDGridCopiado hace y mantiene una copia local de otroEDDGrid's datos y sirve datos de la copia local.
- EDDGridCopiado (y para datos tabulares,EDDTableCopy) es un uso muy fácil y muy eficaz
solución a algunos de los mayores problemas con el servicio de datos de una fuente de datos remota:
- El acceso a los datos de una fuente remota de datos puede ser lento.
- Puede ser lento porque es inherentemente lento (por ejemplo, un tipo ineficiente de servidor) ,
- porque está abrumado por demasiadas peticiones,
- o porque su servidor o el servidor remoto es limitado por ancho de banda.
- El conjunto de datos remoto a veces no está disponible (de nuevo, por diversas razones) .
- Confiar en una fuente para los datos no escala bien (por ejemplo, cuando muchos usuarios y muchosERDDAPs utilizarlo) .
- El acceso a los datos de una fuente remota de datos puede ser lento.
- Cómo funciona...EDDGridCopia resuelve estos problemas haciendo y manteniendo automáticamente una copia local de los datos y sirviendo datos de la copia local.ERDDAP™puede servir datos de la copia local muy, muy rápidamente. Y hacer una copia local alivia la carga en el servidor remoto. Y la copia local es una copia de seguridad del original, que es útil en caso de que algo le suceda al original.
No hay nada nuevo sobre hacer una copia local de un conjunto de datos. Lo nuevo aquí es que esta clase lo hace\*fácil\*crear y crear\*mantener\*una copia local de los datos de\*variedad\*de tipos de fuentes de datos remotas y\*añadir metadatos\*mientras copia los datos.
- Chunks of Data...EDDGridCopia hace la copia local de los datos solicitando trozos de datos del control remoto<dataset. Habrá un trozo para cada valor de la izquierda (primera) axis variable.EDDGridCopiar no confía en los números índices del conjunto de datos remoto para el eje - que pueden cambiar.
ADVERTENCIA: Si el tamaño de un trozo de datos es tan grande (■ 2GB) que causa problemas,EDDGridLa copia no se puede usar. (Lo siento, esperamos tener una solución para este problema en el futuro.)
- \[Una alternativa aEDDGridCopiado - Si los datos remotos están disponibles a través de archivos descargables, no un servicio web, usecache FromUrl opción paraEDDGridDeFiles, que hace una copia local de los archivos remotos y sirve los datos de los archivos locales.\]
- Archivos locales - Cada trozo de datos se almacena en unNetCDFarchivo en un subdirectorio de bigParentDirectory /copia/ datasetID / (según se especifica ensetup.xml) . Los nombres de archivo creados a partir de valores de eje se modifican para hacer que se llamen seguridad (por ejemplo, los hyphens son reemplazados por "x2D") - Esto no afecta los datos reales.
- Nuevos datos -- Cada vezEDDGridCopia se recarga, se comprueba el control remoto<dataset] para ver qué pedazos están disponibles. Si el archivo para un trozo de datos ya no existe, una solicitud para conseguir el trozo se añade a una cola.ERDDAP's taskThread procesa todas las solicitudes solicitadas para fragmentos de datos, uno por uno. Usted puede ver estadísticas para la tareaLa actividad del pan en laPáginay en elDaily Report. (Sí,ERDDAP™podría asignar múltiples tareas a este proceso, pero que utilizaría un montón de ancho de banda, memoria y tiempo de CPU de la fuente remota de datos, y muchos de los localesERDDAPEs el tiempo de ancho de banda, memoria y CPU, ninguno de los cuales es una buena idea.)
NOTA: La primera vezEDDGridCopiado está cargado, (si todo va bien) Muchas solicitudes de fragmentos de datos se añadirán a la cola de tareaThread, pero no se crearán archivos de datos locales. Así que el constructor fallará pero taskThread seguirá trabajando y crear archivos locales. Si todo va bien, la tareaThread hará algunos archivos de datos locales y el próximo intento de volver a cargar el conjunto de datos (en ~15 minutos) tendrá éxito, pero inicialmente con una cantidad muy limitada de datos.
NOTA: Después del conjunto de datos local tiene algunos datos y aparece en suERDDAP, si el conjunto de datos remoto es temporal o permanentemente no accesible, el conjunto de datos local seguirá funcionando.
ADVERTENCIA: Si el conjunto de datos remoto es grande y/o el servidor remoto es lento (Ese es el problema, ¿no?) , tardará mucho en hacer una copia local completa. En algunos casos, el tiempo necesario será inaceptable. Por ejemplo, transmitiendo 1 TB de datos sobre una línea T1 (0,15 GB/s) lleva al menos 60 días, en condiciones óptimas. Además, utiliza mucho ancho de banda, memoria y tiempo de CPU en las computadoras remotas y locales. La solución es enviar un disco duro al administrador del conjunto remoto de datos para que pueda hacer una copia del conjunto de datos y enviar el disco duro de vuelta a usted. Use esos datos como punto de partida yEDDGridCopiar añadirá datos a ella. (Esa es una maneraAmazon EC2 Cloud Servicemaneja el problema, aunque su sistema tenga un montón de ancho de banda.)
ATENCIÓN: Si un valor dado para el más izquierdo (primera) axis variable desaparece del conjunto de datos remoto,EDDGridCopia NO elimina el archivo copiado local. Si quieres, puedes eliminarlo tú mismo.
Recibir cheques de copiaFuente Datos
Eldatasets.xmlpara este conjunto de datos puede tener una etiqueta opcional
<checkSourceData>true</checkSourceData>
El valor predeterminado es cierto. Si/cuando lo estableces en falso, el conjunto de datos nunca comprobará el conjunto de datos fuente para ver si hay datos adicionales disponibles.
Sólo desde
Puedes decirEDDGridCopia para hacer una copia de un subconjunto del conjunto de datos fuente, en lugar de todo el conjunto de datos fuente, añadiendo una etiqueta en el formulario<sóloDesde algunos Valor </onlySince confiado a la datasetdatasets.xmlIdiota.EDDGridCopia sólo descargará valores de datos relacionados con los valores de la primera dimensión (generalmente la dimensión del tiempo) que son mayores algunos Valor . algunos Valor puede ser:
-
Un tiempo relativo especificado pornow- nUnits . Por ejemplo,<sóloDesdenow-2 años</onlySince confiar le dice al conjunto de datos que sólo haga copias locales de los datos para datos donde los valores de la dimensión externa (generalmente valores de tiempo) están dentro de los últimos 2 años (que se reevalua cada vez que se recarga el conjunto de datos, que es cuando busca nuevos datos para copiar) . Ver elnow- nUnits sintaxis descripción. Esto es útil si la primera dimensión tiene datos de tiempo, que generalmente lo hace.
EDDGridCopia no elimina archivos de datos locales que tienen datos que, con el tiempo, se hace más viejo quenow- nUnits . Puede borrar esos archivos en cualquier momento si lo desea. Si lo hace, recomendamos encarecidamente que establezca unbanderadespués de eliminar los archivos para decirEDDGridCopia para actualizar la lista de archivos caché.
-
Un punto fijo en el tiempo especificado como una cadena ISO 8601yyyy-MM-ddTHH:mm:ssZ. Por ejemplo,<sóloDesde el año 2000-01T00:00Z</onlySince confiar le dice al conjunto de datos sólo para hacer copias locales de datos donde el valor de la primera dimensión es \=2000-01T00:00Z. Esto es útil si la primera dimensión tiene datos de tiempo, que generalmente lo hace.
-
Un número de punto flotante. Por ejemplo,<sóloDesde el principio946684800.0<- Solo desde cero. Las unidades serán las unidades de destino de la primera dimensión. Por ejemplo, para dimensiones temporales, las unidades enERDDAP™Siempre"seconds since 1970-01-01T00:00:00Z". So 946684800.0"seconds since 1970-01-01T00:00:00Z"es equivalente a 2000-01T00:00:00Z. Esta es siempre una opción útil, pero es especialmente útil cuando la primera dimensión no tiene datos de tiempo.
EDDGridCopia Uso recomendado
- Crear el<dataset entrada (el tipo nativo, noEDDGridCopiado) para la fuente remota de datos. Haz que funcione correctamente, incluyendo todos los metadatos deseados.
- Si es demasiado lento, agregue código XML para envolverlo en unEDDGridCopiar el conjunto de datos.
- Use un diferentedatasetID (quizás cambiando eldatasetIDdel viejodatasetIDligeramente) .
- Copiar<accesible Para confiar,<reloadEveryNMinutes confianza y<onChange Principe desde el remotoEDDGrid's XML alEDDGridCopia es XML. (Sus valores paraEDDGridCopiar materia; sus valores para el conjunto de datos interno se vuelven irrelevantes.)
- ERDDAP™hará y mantendrá una copia local de los datos.
- ATENCIÓN:EDDGridCopia supone que los valores de datos para cada pedazo no cambian nunca. Si/cuando lo hacen, usted necesita eliminar manualmente los archivos de la ranura en bigParentDirectory /copia/ datasetID / que cambió ybanderael conjunto de datos a ser recargado para que los trozos eliminados sean reemplazados. Si tiene una suscripción de correo electrónico al conjunto de datos, obtendrá dos emails: uno cuando el conjunto de datos se recarga y comienza a copiar los datos, y otro cuando el conjunto de datos se carga de nuevo (automáticamente) y detecta los nuevos archivos de datos locales.
- Todos los valores del eje deben ser iguales. Para cada uno de los ejes excepto el más izquierdo (primera) , todos los valores deben ser iguales para todos los niños. La precisión de las pruebas se determina pormatchAxisNDigits.
- Ajustes, metadatos, variables...EDDGridCopiar utiliza la configuración, metadatos y variables del conjunto de datos de fuente adjunto.
- Cambio de metadatos -- Si necesitas cambiar algoaddAttributeso cambiar el orden de las variables asociadas con el conjunto de datos fuente:
- Cambiar eladdAttributespara el conjunto de datos fuentedatasets.xml, según sea necesario.
- Eliminar uno de los archivos copiados.
- Establecer unbanderapara volver a cargar el conjunto de datos inmediatamente. Si utilizas una bandera y tienes una suscripción de correo electrónico al conjunto de datos, recibirás dos emails: uno cuando el conjunto de datos vuelva a cargar y comience a copiar los datos, y otro cuando el conjunto de datos se carga de nuevo. (automáticamente) y detecta los nuevos archivos de datos locales.
- El archivo eliminado se regenerará con los nuevos metadatos. Si el conjunto de datos fuente no está disponible,EDDGridCopia conjunto de datos obtendrá metadatos del archivo regenerado, ya que es el archivo más joven.
EDDGridCopia esqueleto XML
<dataset type="EDDGridCopy" datasetID\="..." active\="..." >
<accessibleTo>...</accessibleTo> <!-- 0 or 1 -->
<graphsAccessibleTo>auto|public</graphsAccessibleTo> <!-- 0 or 1 -->
<accessibleViaFiles>true|false(default)</accessibleViaFiles>
<!-- 0 or 1 -->
<accessibleViaWMS>...</accessibleViaWMS> <!-- 0 or 1 -->
<reloadEveryNMinutes>...</reloadEveryNMinutes> <!-- 0 or 1 -->
<defaultDataQuery>...</defaultDataQuery> <!-- 0 or 1 -->
<defaultGraphQuery>...</defaultGraphQuery> <!-- 0 or 1 -->
<fgdcFile>...</fgdcFile> <!-- 0 or 1 -->
<iso19115File>...</iso19115File> <!-- 0 or 1 -->
<onChange>...</onChange> <!-- 0 or more -->
<matchAxisNDigits>...</matchAxisNDigits> <!-- 0 or 1 -->
<fileTableInMemory>...</fileTableInMemory> <!-- 0 or 1 (true or false
(the default)) -->
<checkSourceData>...</checkSourceData> <!-- 0 or 1 -->
<onlySince>...</onlySince> <!-- 0 or 1 -->
<dataset>...</dataset> <!-- 1 -->
</dataset>
EDDTableDesdeCassandra
EDDTableDesdeCassandra maneja datos de unoCassandramesa. Cassandra es una base de datos NoSQL.
- ERDDAP™puede trabajar con Cassandra v2 y v3 sin cambios ni diferencias en la configuración. Hemos probado conCassandra v2 y v3 de Apache. Es probable queERDDAP™también puede trabajar con Cassandra descargado de DataStax.
- Para agosto 2019 - mayo 2021, tuvimos problemas para conseguir que Cassandra trabajara con AdoptOpenJdkJavav8. Tiró una EXCEPCIÓN\_ACCESS\_VIOLATION). Pero ahora (Mayo 2021) , ese problema se ha ido: podemos utilizar con éxito Cassandra v2.1.22 y AdoptOpenJdk jdk8u292-b10.
Cuadro 1
Cassandra no soporta "joins" en la forma en que las bases de datos relacionales lo hacen. UnoERDDAP™EDDTableDeCassandra dataset mapas a uno (tal vez un subconjunto de uno) Mesa Cassandra.
Cassandradatasets.xml
- ERDDAP™viene con el CassandraJavaconductor, así que no necesitas instalarlo por separado.
- Lea cuidadosamente toda la información de este documento sobre EDDTableDesdeCassandra. Algunos de los detalles son muy importantes.
- El CassandraJavaconductor está destinado a trabajar con Apache Cassandra (1.2+) y DataStax Enterprise (3.1+) . Si está usando Apache Cassandra 1.2.x, debe editar el archivo cassandra.yaml para cada nodo para iniciar\_native\_transport: verdadero, luego reiniciar cada nodo.
- Recomendamos encarecidamente utilizar elGenerarDatasets Programa Xmlpara hacer un borrador duro deldatasets.xmlpara este conjunto de datos. Luego puede editar eso para ajustarlo (especialmente [<partición KeySourceNames confiar] (#partitionkeysourcenames) ). Puede reunir la mayor parte de la información que necesita para crear el XML para un conjunto de datos EDDTableDesdeCassandra contactando con el administrador de Cassandra y buscando la web.
GenerarDatasets Xml tiene dos opciones especiales para EDDTableDesdeCassandra:
- Si entras "!!!LIST!!!" (sin las citas) para el espacio clave, el programa mostrará una lista de espacios clave
- Si usted entra en un espacio clave específico y luego entra "!!!LIST!!!" (sin las citas) para el nombre de tabla, el programa mostrará una lista de tablas en ese espacio clave y sus columnas.
Sensibilidad de caso
- Nombres en el espacio clave y en la tabla - Cassandra trata el espacio clave y los nombres de tabla de una manera insensible. Debido a esto, usted debe nunca utilizar una palabra reservada (pero con un caso diferente) como un espacio clave de Cassandra o nombre de mesa.
- Nombres de columna sensibles a casos - Por defecto, Cassandra trata los nombres de columna de una manera insensible. Si usas una de las palabras reservadas de Cassandra como nombre de columna (¡Por favor, no!) , debes usar
<columnNameQuotes>"<columnNameQuotes>
dentrodatasets.xmlpara este conjunto de datos de modo que Cassandra yERDDAP™tratará los nombres de las columnas de una manera sensible a caso. Esto probablemente será un dolor de cabeza masivo para usted, porque es difícil determinar las versiones sensibles a los casos de los nombres de las columnas -- Cassandra casi siempre muestra los nombres de las columnas como todos los casos inferiores, independientemente del caso verdadero.
- Trabajar estrechamente con el administrador Cassandra, que puede tener experiencia relevante. Si el conjunto de datos no se carga, lea elmensaje de errorcuidadosamente para averiguar por qué.
Cassandra<conexión Propiedad
Cassandra tiene propiedades de conexión que se pueden especificar endatasets.xml. Muchos de ellos afectarán el rendimiento de la Cassandra-ERDDAP™Conexión. Desafortunadamente, las propiedades de Cassandra deben establecerse programáticamente enJavaAsí queERDDAP™debe tener código para cada propiedadERDDAP™soportes. Actualmente,ERDDAP™soporta estas propiedades: (Los defectos mostrados son lo que vemos. Los defectos de su sistema pueden ser diferentes.)
- Opciones generales
<conexión Nombre de la propiedad=" compresión " ninguno|LZ4|snappy </conexión Propiedad intelectual (case-insensible, default=none)
(Consejos generales de compresión: use 'none' si la conexión entre Cassandra y CassandraERDDAP™es local/rápido y utilizar 'LZ4' si la conexión es remota/slow.)
<conexión Nombre de la propiedad=" credenciales " nombre de usuario/password </conexión Propiedad intelectual (Eso es literal'/')
<conexión Nombre de la propiedad=" métricas " verdadero|falso </conexión Propiedad intelectual (2021-01-25 era default=true, ahora ignorado y siempre falso)
<conexión Nombre de la propiedad=" puerto " un entero </conexión Propiedad intelectual (predeterminado para el protocolo binario nativo=9042)
<conexión Nombre de la propiedad=" ssl " verdadero|falso </conexión Propiedad intelectual (default=false)
(Mi rápido intento de usar Ssl falló. Si tienes éxito, por favor dime cómo lo hiciste.) - Opciones de consulta
<conexión Nombre de la propiedad=" coherencia Nivel " Todos|cualquiera|cada uno|local|local|local|uno|quorum|serie|tres|dos. </conexión Propiedad intelectual (caso insensible, predeterminado=ONE)
<conexión Nombre de la propiedad=" fetchSize " un entero </conexión Propiedad intelectual (default=5000)
(No fije el tamaño de etchSize a un valor más pequeño.)
<conexión Nombre de la propiedad=" serialConsistencyLevel " Todos|cualquiera|cada uno|local|local|local|uno|quorum|serie|tres|dos. </conexión Propiedad intelectual (case-insensible, default=SERIAL) - Opciones de bolsillo
<conexión Nombre de la propiedad=" connectTimeoutMillis " un entero </conexión Propiedad intelectual (default=5000)
(No establece conexión TimeoutMillis a un valor más pequeño.)
<conexión Nombre de la propiedad=" keepAlive " verdadero|falso </conexión Propiedad intelectual <conexión Nombre de la propiedad=" readTimeoutMillis " un entero </conexión Propiedad intelectual (La lectura predeterminada de CassandraTimeoutMillis es de 12000, peroERDDAP™cambia el predeterminado a 120000. Si Cassandra está lanzando readTimeouts, aumentar esto puede no ayudar, porque Cassandra a veces los tira antes de este momento. El problema es más probable que esté almacenando demasiados datos por partición Combinación clave.)
<conexión Nombre de la propiedad=" receiveBufferSize " un entero </conexión Propiedad intelectual (No está claro cuál es el valor predeterminado de recibirBufferSize. No pongas esto a un pequeño valor.)
<conexión Nombre de la propiedad=" soLinger " un entero </conexión Propiedad intelectual <conexión Nombre de la propiedad=" tcpNoDelay " verdadero|falso </conexión Propiedad intelectual (default=null)
Si necesita ser capaz de establecer otras propiedades de conexión, vea nuestrasección sobre la obtención de apoyo adicional.
Para una determinada startup de Tomcat, conexiónLas ventajas sólo se utilizan la primera vez que se crea un conjunto de datos para una URL de Cassandra dada. Todas las recargas de ese conjunto de datos y todos los conjuntos de datos posteriores que comparten la misma URL utilizarán esas conexiones originalesPropiedades.
CQL
El lenguaje de la consulta de Cassandra (CQL) es superficialmente como SQL, el lenguaje de consulta utilizado por bases de datos tradicionales. Porque...OPeNDAP's solicitudes de datos tabulares fueron diseñadas para imitar solicitudes de datos tabulares SQL, es posibleERDDAP™convertir las solicitudes de datos tabulares en Límites CQL/PreparedStatements.ERDDAP™registra la declaración enlog.txtcomo
como texto: el estadoAsText
La versión de la declaración que vea será una representación de texto de la declaración y sólo tendrá "¿?" donde se colocarán los valores de restricción.
No tan simple... Desafortunadamente, CQL tiene muchas restricciones sobre las cuales columnas pueden ser consultadas con qué tipos de limitaciones, por ejemplo, las columnas clave de partición pueden ser limitadas con = e IN, por lo queERDDAP™envía algunas restricciones a Cassandra y aplica todas las restricciones después de que los datos sean recibidos de Cassandra. Para ayudarERDDAP™tratar eficientemente con Cassandra, usted necesita especificar [<partición KeySourceNames confiar] (#partitionkeysourcenames) [<clusterColumnSourceNames confianza] (#clustercolumnsourcenames) , y<indexColumnSourceNames confianza] (#indexcolumnsourcenames) dentrodatasets.xmlpara este conjunto de datos. Estas son las formas más importantes de ayudarERDDAP™trabajar eficientemente con Cassandra. Si no lo dicesERDDAP™esta información, el conjunto de datos será dolorosamente lentoERDDAP™y utilizar toneladas de recursos de Cassandra.
<partición KeySourceNames caergt;
Porque las teclas de partición juegan un papel central en las tablas de Cassandra,ERDDAP™necesita saber susourceNames y, si es pertinente, otra información sobre cómo trabajar con ellos.
- Usted debe especificar una lista separada por coma de los nombres de las columnas de la fuente de particióndatasets.xmlvia<partición KeySourceNames confiar. Ejemplo simple,
<partitionKeySourceNames>station, deviceid<partitionKeySourceNames>
Ejemplo más complejo,
<partitionKeySourceNames>deviceid=1007, date/sampletime/1970-01-01<partitionKeySourceNames>
- Llaves de partición de TimeStamp -- Si una de las columnas clave de partición es una columna de timetamp que tiene una versión más gruesa de otra columna de timetamp, especifique esto a través de
particiónKeySourcName/otherColumnSourceName/time\_precision
Dondetime\_precisiones uno de lostime\_precisionstrings used elsewhere inERDDAP. La Z que sigue en eltime\_precisionla cadena es el predeterminado, así que no importa si la cadenatime\_precisionLa cuerda termina en Z o no. Por ejemplo,ERDDAP™interpretará la fecha/sampletime/1970-01-01 como "Constraints for date can be built from constraints on sampletime by using thistime\_precision." La conversión real de las limitaciones es más compleja, pero esa es la sinopsis. Use esto cuando sea relevante. PermiteERDDAP™trabajar eficientemente con Cassandra. Si esta relación entre columnas existe en una tabla de Cassandra y no se diceERDDAP™, el conjunto de datos será dolorosamente lentoERDDAP™y utilizar toneladas de recursos de Cassandra. - Individual Claves de la partición del valor - Si quieres unERDDAP™conjunto de datos para trabajar con sólo un valor de una clave de partición, especificar particiónKeySourceName=valor . No utilice las citas para una columna numérica, por ejemplo, deviceid=1007 Utilice las citas para una columna String, por ejemplo, stationid="Point Pinos"
- Dataset Default Sort Order... El orden de la clave de partición<dataVariable################################################################################################################################################################################################################################################################datasets.xmldetermina el orden predeterminado de los resultados de Cassandra. Por supuesto, los usuarios pueden solicitar una orden de tipo diferente para un determinado conjunto de resultados mediante el gasto "orderBy (" lista separada de variables ") hasta el final de su consulta.
- Por defecto, Cassandra yERDDAP™tratar los nombres de las columnas de una manera insensible. Pero si te fijascolumnNameQuotesa ",ERDDAP™tratará los nombres de columna Cassandra de una manera sensible a caso.
<partición KeyCSV curvagt;
Si esto se especifica,ERDDAP™lo utilizará en lugar de pedir Cassandra para la partición Información clave cada vez que se recarga el conjunto de datos. Esto proporciona la lista de valores clave de partición distintos, en el orden que se utilizarán. Los tiempos deben ser especificados como segundos desde 1970-01T00:00Z. Pero también hay dos formas alternativas especiales para especificar los tiempos (cada uno codificado como una cadena) :
- tiempo (aISO8601 Hora) (Puede ser codificado como una cadena)
- "tiempos (anISO8601StartTime, strideSeconds, stopTime) " (DEBE ser codificado como una cadena)
Para El tiempo puede ser un ISO8601 Tiempo o "now-Tiempo de los ninos (por ejemplo, "now-3 minutos") . Para El tiempo no tiene que ser una coincidencia exacta de inicio Tiempo + x strideSeconds. Una fila con un tiempo () valor se expande en múltiples filas antes de cada consulta, por lo que la lista de partición Las llaves pueden estar siempre perfectamente actualizadas. Por ejemplo,
<partitionKeyCSV>
deviceid,date
1001,"times(2014-11-01T00:00:00Z, 86400, 2014-11-02T00:00:00Z)"
1007,"time(2014-11-07T00:00:00Z)"
1008,time(2014-11-08T00:00:00Z)
1009,1.4154912E9
</partitionKeyCSV>
se expande en esta tabla de combinaciones clave de partición:
deviceid,date
1001,1.4148E9
1001,1.4148864E9
1007,1.4153184E9
1008,1.4154048E9
1009,1.4154912E9