{"id":13738768,"url":"https://github.com/hmedrano/erddap-python","last_synced_at":"2026-02-27T00:04:35.284Z","repository":{"id":57426833,"uuid":"330634215","full_name":"hmedrano/erddap-python","owner":"hmedrano","description":"ERDDAP Client for python ","archived":false,"fork":false,"pushed_at":"2023-08-26T09:47:10.000Z","size":4578,"stargazers_count":13,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-11-21T22:23:30.288Z","etag":null,"topics":["erddap","library","pip"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hmedrano.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-01-18T10:42:47.000Z","updated_at":"2024-02-21T01:07:01.000Z","dependencies_parsed_at":"2024-01-24T23:05:48.931Z","dependency_job_id":"667c42d8-f1dc-427d-bbad-e8fe7c49d597","html_url":"https://github.com/hmedrano/erddap-python","commit_stats":{"total_commits":77,"total_committers":2,"mean_commits":38.5,"dds":"0.20779220779220775","last_synced_commit":"eac6052ea7168f40c84ce87b1abf955236ce20f7"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/hmedrano/erddap-python","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmedrano%2Ferddap-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmedrano%2Ferddap-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmedrano%2Ferddap-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmedrano%2Ferddap-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hmedrano","download_url":"https://codeload.github.com/hmedrano/erddap-python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmedrano%2Ferddap-python/sbom","scorecard":{"id":466676,"data":{"date":"2025-08-11","repo":{"name":"github.com/hmedrano/erddap-python","commit":"eac6052ea7168f40c84ce87b1abf955236ce20f7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.3,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2014-14 / GHSA-652x-xj99-gmcc","Warn: Project is vulnerable to: GHSA-9hjg-9r4m-mvj7","Warn: Project is vulnerable to: GHSA-9wx4-h78v-vm56","Warn: Project is vulnerable to: PYSEC-2014-13 / GHSA-cfj3-7x9c-4p3h","Warn: Project is vulnerable to: PYSEC-2018-28 / GHSA-x84v-xcm2-53pg"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T12:42:54.128Z","repository_id":57426833,"created_at":"2025-08-19T12:42:54.128Z","updated_at":"2025-08-19T12:42:54.128Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29878278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T23:51:21.483Z","status":"ssl_error","status_checked_at":"2026-02-26T23:50:46.793Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["erddap","library","pip"],"created_at":"2024-08-03T04:00:16.367Z","updated_at":"2026-02-27T00:04:35.234Z","avatar_url":"https://github.com/hmedrano.png","language":"Jupyter Notebook","funding_links":[],"categories":["ERDDAP Clients"],"sub_categories":[],"readme":"# ERDDAP python library \n\n[![Anaconda-Server Badge](https://anaconda.org/conda-forge/erddap-python/badges/version.svg)](https://anaconda.org/conda-forge/erddap-python)\n[![image](https://img.shields.io/pypi/v/erddap-python.svg)](https://pypi.python.org/pypi/erddap-python)\n[![image](https://pepy.tech/badge/erddap-python)](https://pepy.tech/project/erddap-python)\n[![Build Status](https://travis-ci.com/hmedrano/erddap-python.svg?branch=main)](https://travis-ci.com/hmedrano/erddap-python)\n[![image](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## About\n\n[ERDDAP](https://coastwatch.pfeg.noaa.gov/erddap/information.html) is a data server that gives you a simple, consistent way to download subsets of gridded and tabular scientific datasets in common file formats and make graphs and maps. \n\nerddap-python is a python client for the ERDDAP Restful API, it can obtain server status metrics, provides search methods, gives tabledap and griddap class objects for metadata and data access.\n\nThis library was initially built for [CICESE](https://cicese.edu.mx), [CIGOM](https://cigom.org), [OORCO](https://oorco.org), and [CEMIEOceano](https://cemieoceano.mx/) projects for the automation of reports, interactive custom visualizations and data analysis.  Most of the functionality was inspired on the work of [erddapy](https://github.com/ioos/erddapy) library, but designed more for a more flexible backend service construction in mind.\n\n\nFull API reference can be found [here](https://hmedrano.github.io/erddap-python/).\n\n## Projects using erddap-python\n\n - [ERDDAP server's status metrics dashboard using Streamlit](https://share.streamlit.io/hmedrano/erddap-status-dashboard/main/dashboard_streamlit_app.py)\n - [Module for Ocean Observatory Data Analysis library](https://github.com/rbardaji/mooda)\n\n## Requirements\n\n - python 3\n - python libraries numpy, pandas, xarray, netCDF4\n\n## Installation\n\nUsing pip:\n\n```\n$ pip install erddap-python\n```\n\nAlso you can use `conda` package manager, from the `conda-forge` channel:\n\n```\n$ conda install -c conda-forge erddap-python\n```\n\n## Usage\n\n### Explore a ERDDAP Server\n\nConnect to a ERDDAP Server, and get results from a basic search.\n\n```python\n\u003e\u003e\u003e from erddapClient import ERDDAP_Server\n\u003e\u003e\u003e \n\u003e\u003e\u003e remoteServer = ERDDAP_Server('https://coastwatch.pfeg.noaa.gov/erddap')\n\u003e\u003e\u003e remoteServer\n\u003cerddapClient.ERDDAP_Server\u003e\nServer version:  ERDDAP_version=2.11\n```\n\n[search](https://hmedrano.github.io/erddap-python/#ERDDAP_Server.search) and [advancedSerch](https://hmedrano.github.io/erddap-python/#ERDDAP_Server.advancedSearch) methods are available, it builds the search request URL and also can \nmake the request to the ERDDAP restful services to obtain results. \n\n```python\n\u003e\u003e\u003e searchRequest = remoteServer.search(searchFor=\"gliders\")\n\u003e\u003e\u003e searchRequest\n\u003cerddapClient.ERDDAP_SearchResults\u003e\nResults:  1\n[\n  0 - \u003cerddapClient.ERDDAP_Tabledap\u003e scrippsGliders , \"Gliders, Scripps Institution of Oceanography, 2014-present\"\n]\n```\n\nThe methods returns an object with a list of the [ERDDAP_Tabledap](https://hmedrano.github.io/erddap-python/#ERDDAP_Tabledap) or [ERDDAP_Griddap](https://hmedrano.github.io/erddap-python/#ERDDAP_Griddap) objects that matched the search criteria.\n\n### Connect to Tabledap datasets \n\n\nUsing the [ERDDAP_Tabledap](https://hmedrano.github.io/erddap-python/#ERDDAP_Tabledap) class you can construct ERDDAP data request URL's\n\n```python\n\n\u003e\u003e\u003e from erddapClient import ERDDAP_Tabledap\n\u003e\u003e\u003e \n\u003e\u003e\u003e remote = ERDDAP_Tabledap('https://coastwatch.pfeg.noaa.gov/erddap', 'cwwcNDBCMet')\n\u003e\u003e\u003e \n\u003e\u003e\u003e remote.setResultVariables(['station','time','atmp'])\n\u003e\u003e\u003e print (remote.getURL('htmlTable'))\n\n'https://coastwatch.pfeg.noaa.gov/erddap/tabledap/cwwcNDBCMet.htmlTable?station%2Ctime%2Catmp'\n\n```\n\nThe tabledap object internally stores a stack for the result variables, constrainsts and server side operations. You \ncan keep adding them and get the different urls.\n\n```python\n\u003e\u003e\u003e import datetime as dt \n\u003e\u003e\u003e \n\u003e\u003e\u003e remote.addConstraint('time\u003e=2020-12-29T00:00:00Z') \\\n..:       .addConstraint({ 'time\u003c=' : dt.datetime(2020,12,31) })\n\u003e\u003e\u003e remote.getURL()\n\n'https://coastwatch.pfeg.noaa.gov/erddap/tabledap/cwwcNDBCMet.csvp?station%2Ctime%2Catmp\u0026time%3E=2020-12-29T00%3A00%3A00Z\u0026time%3C=2020-12-31T00%3A00%3A00Z'\n\n\u003e\u003e\u003e\n\u003e\u003e\u003e remote.orderByClosest(['station','time/1day'])\n\u003e\u003e\u003e remote.getURL()\n\n'https://coastwatch.pfeg.noaa.gov/erddap/tabledap/cwwcNDBCMet.csvp?station%2Ctime%2Catmp\u0026time%3E=2020-12-29T00%3A00%3A00Z\u0026time%3C=2020-12-31T00%3A00%3A00Z\u0026orderByClosest(%22station%2Ctime/1day%22)'\n\n\u003e\u003e\u003e \n```\n\nThe class has methods to clear the result variables, the constraints, and the server side operations that are added in the stack: [clearConstraints()](https://hmedrano.github.io/erddap-python/#ERDDAP_Dataset.clearConstraints), [clearResultVariable()](https://hmedrano.github.io/erddap-python/#ERDDAP_Dataset.clearResultVariables), [clearServerSideFunctions()](https://hmedrano.github.io/erddap-python/#ERDDAP_Dataset.clearServerSideFunctions) or [clearQuery()](https://hmedrano.github.io/erddap-python/#ERDDAP_Dataset.clearQuery).\n\n#### Tabledap data subset request\n\nAn user can build the data request query by chaining the result variables, constraints and server side adding methods.  And at the end you can make the data request in all the available formats that ERDDAP provides (csv, mat, json, nc, etc).\n\n```python\n\u003e\u003e\u003e\n\u003e\u003e\u003e remote.clearQuery()\n\u003e\u003e\u003e\n\u003e\u003e\u003e responseCSV = (\n..:     remote.setResultVariables(['station','time','atmp'])\n..:           .addConstraint('time\u003e=2020-12-29T00:00:00Z')\n..:           .addConstraint('time\u003c=2020-12-31T00:00:00Z')\n..:           .orderByClosest(['station','time/1day'])\n..:           .getData('csvp')\n..: )\n\u003e\u003e\u003e \n\u003e\u003e\u003e print(responseCSV)\n\nstation,time (UTC),atmp (degree_C)\n41001,2020-12-29T00:00:00Z,17.3\n41001,2020-12-30T00:00:00Z,13.7\n41001,2020-12-31T00:00:00Z,15.9\n41004,2020-12-29T00:10:00Z,18.1\n41004,2020-12-30T00:00:00Z,17.1\n41004,2020-12-31T00:00:00Z,21.2\n41008,2020-12-29T00:50:00Z,14.8\n...\n.\n\n\u003e\u003e\u003e\n\u003e\u003e\u003e remote.clearQuery()\n\u003e\u003e\u003e\n\u003e\u003e\u003e responsePandas = (\n..:     remote.setResultVariables(['station','time','atmp'])\n..:           .addConstraint('time\u003e=2020-12-29T00:00:00Z')\n..:           .addConstraint('time\u003c=2020-12-31T00:00:00Z')\n..:           .orderByClosest(['station','time/1day'])\n..:           .getDataFrame()\n..: )\n\u003e\u003e\u003e\n\u003e\u003e\u003e responsePandas\n\n     station            time (UTC)  atmp (degree_C)\n0      41001  2020-12-29T00:00:00Z             17.3\n1      41001  2020-12-30T00:00:00Z             13.7\n2      41001  2020-12-31T00:00:00Z             15.9\n3      41004  2020-12-29T00:00:00Z             18.2\n4      41004  2020-12-30T00:00:00Z             17.1\n...      ...                   ...              ...\n2006   YKRV2  2020-12-30T00:00:00Z              NaN\n2007   YKRV2  2020-12-31T00:00:00Z              8.1\n2008   YKTV2  2020-12-29T00:00:00Z             11.3\n2009   YKTV2  2020-12-30T00:00:00Z              NaN\n2010   YKTV2  2020-12-31T00:00:00Z              7.1\n\n[2011 rows x 3 columns]\n\n\n```\n\n\n### Griddap datasets\n\nAll the url building functions, and data request functionality is available in the [ERDDAP_Griddap](https://hmedrano.github.io/erddap-python/#ERDDAP_Griddap) class. \n\nWith this class you can download data subsets in all the available ERDDAP data formats, plus the posibility to request a fully described xarray.DataArrays objects.\n\nThis class can parse the griddap query, and detect if the query is malformed before requesting data from the \nERDDAP server.\n\nUsage sample:\n\n```python\n\u003e\u003e\u003e from erddapClient import ERDDAP_Griddap\n\u003e\u003e\u003e \n\u003e\u003e\u003e remote = ERDDAP_Griddap('https://coastwatch.pfeg.noaa.gov/erddap', 'hycom_gom310D')\n\u003e\u003e\u003e \n\u003e\u003e\u003e print(remote)\n\n\u003cerddapClient.ERDDAP_Griddap\u003e\nTitle:       NRL HYCOM 1/25 deg model output, Gulf of Mexico, 10.04 Expt 31.0, 2009-2014, At Depths\nServer URL:  https://coastwatch.pfeg.noaa.gov/erddap\nDataset ID:  hycom_gom310D\nDimensions: \n  time (double) range=(cftime.DatetimeGregorian(2009, 4, 2, 0, 0, 0, 0), cftime.DatetimeGregorian(2014, 8, 30, 0, 0, 0, 0)) \n    Standard name: time \n    Units:         seconds since 1970-01-01T00:00:00Z \n  depth (float) range=(0.0, 5500.0) \n    Standard name: depth \n    Units:         m \n  latitude (float) range=(18.09165, 31.96065) \n    Standard name: latitude \n    Units:         degrees_north \n  longitude (float) range=(-98.0, -76.40002) \n    Standard name: longitude \n    Units:         degrees_east \nVariables: \n  temperature (float) \n    Standard name: sea_water_potential_temperature \n    Units:         degC \n  salinity (float) \n    Standard name: sea_water_practical_salinity \n    Units:         psu \n  u (float) \n    Standard name: eastward_sea_water_velocity \n    Units:         m/s \n  v (float) \n    Standard name: northward_sea_water_velocity \n    Units:         m/s \n  w_velocity (float) \n    Standard name: upward_sea_water_velocity \n    Units:         m/s \n```\n\nRight after creating the griddap object you can explore the dimensions information.\n\n```python\n\u003e\u003e\u003e print(remote.dimensions)\n\n\u003cerddapClient.ERDDAP_Griddap_dimensions\u003e\nDimensions:\n - time (nValues=1977) 1238630400 .. 1409356800\n - depth (nValues=40) 0.0 .. 5500.0\n - latitude (nValues=385) 18.091648 .. 31.960648\n - longitude (nValues=541) -98.0 .. -76.400024\n\n\u003e\u003e\u003e print(remote.dimensions['time'])\n\n\u003cerddapClient.ERDDAP_Griddap_dimension\u003e\nDimension: time\n  _nValues : 1977\n  _evenlySpaced : True\n  _averageSpacing : 1 day\n  _dataType : double\n  _CoordinateAxisType : Time\n  actual_range : (cftime.DatetimeGregorian(2009, 4, 2, 0, 0, 0, 0), cftime.DatetimeGregorian(2014, 8, 30, 0, 0, 0, 0))\n  axis : T\n  calendar : standard\n  ioos_category : Time\n  long_name : Time\n  standard_name : time\n  time_origin : 01-JAN-1970 00:00:00\n  units : seconds since 1970-01-01T00:00:00Z\n```\n\n#### Griddap data request in a xarray.DataArray\n\nRequest a data subset and store it in a fully described xarray.DataArray object.\n\n```python\n\n\u003e\u003e\u003e xSubset = ( remote.setResultVariables('temperature')\n..:                   .setSubset(time=\"2012-01-13\",\n..:                              depth=slice(0,2000),\n..:                              latitude=slice(18.09165, 31.96065),\n..:                              longitude=slice(-98.0,-76.40002))\n..:                   .getxArray() )\n\n\u003e\u003e\u003e xSubset\n\n\u003cxarray.Dataset\u003e\nDimensions:      (depth: 33, latitude: 385, longitude: 541, time: 1)\nCoordinates:\n  * time         (time) object 2012-01-13 00:00:00\n  * depth        (depth) float64 0.0 5.0 10.0 15.0 ... 1.5e+03 1.75e+03 2e+03\n  * latitude     (latitude) float64 18.09 18.13 18.17 ... 31.89 31.93 31.96\n  * longitude    (longitude) float64 -98.0 -97.96 -97.92 ... -76.48 -76.44 -76.4\nData variables:\n    temperature  (time, depth, latitude, longitude) float32 ...\nAttributes: (12/32)\n    cdm_data_type:              Grid\n    Conventions:                COARDS, CF-1.0, ACDD-1.3\n    creator_email:              hycomdata@coaps.fsu.edu\n    creator_name:               Naval Research Laboratory\n    creator_type:               institution\n    creator_url:                https://www.hycom.org\n    ...                         ...\n    standard_name_vocabulary:   CF Standard Name Table v70\n    summary:                    NRL HYCOM 1/25 deg model output, Gulf of Mexi...\n    time_coverage_end:          2014-08-30T00:00:00Z\n    time_coverage_start:        2009-04-02T00:00:00Z\n    title:                      NRL HYCOM 1/25 deg model output, Gulf of Mexi...\n    Westernmost_Easting:        -98.0\n\n```\n\nThe above data request can also be done using the ERDDAP opendap extended query format, by example :\n\n```python \n\u003e\u003e\u003e xSubset = ( remote.setResultVariables('temperature[(2012-01-13)][(0):(2000)][(18.09165):(31.96065)][(-98.0):(-76.40002)]')\n..:                   .getxArray()            \n```\n\n#### Make request for subsets in different formats.\n\nRequest a location timeseires and store it in a pandas dataframe, using the [getDataFrame](https://hmedrano.github.io/erddap-python/#ERDDAP_Dataset.getDataFrame) method.\n\n```python\n\u003e\u003e\u003e # \n\u003e\u003e\u003e\n\u003e\u003e\u003e remote.clearQuery()\n\u003e\u003e\u003e dfSubset = ( remote.setResultVariables(['temperature','salinity'])\n..:                    .setSubset(time=slice(\"2009-04-02\",\"2014-8-30\"),\n..:                               depth=0,\n..:                               latitude=22.5,\n..:                               longitude=-95.5)\n..:                    .getDataFrame(header=0,\n..:                                  names=['time','depth','latitude','longitude', 'temperature', 'salinity'],\n..:                                  parse_dates=['time'],\n..:                                  index_col='time') )\n\n\u003e\u003e\u003e dfSubset\n\n                           depth  latitude  longitude  temperature   salinity\ntime                                                                         \n2009-04-02 00:00:00+00:00    0.0  22.51696  -95.47998    24.801798  36.167076\n2009-04-03 00:00:00+00:00    0.0  22.51696  -95.47998    24.605570  36.256450\n2009-04-04 00:00:00+00:00    0.0  22.51696  -95.47998    24.477884  36.086346\n2009-04-05 00:00:00+00:00    0.0  22.51696  -95.47998    24.552357  36.133224\n2009-04-06 00:00:00+00:00    0.0  22.51696  -95.47998    25.761946  36.179676\n...                          ...       ...        ...          ...        ...\n2014-08-26 00:00:00+00:00    0.0  22.51696  -95.47998    30.277546  36.440037\n2014-08-27 00:00:00+00:00    0.0  22.51696  -95.47998    30.258907  36.485844\n2014-08-28 00:00:00+00:00    0.0  22.51696  -95.47998    30.298597  36.507530\n2014-08-29 00:00:00+00:00    0.0  22.51696  -95.47998    30.246874  36.493400\n2014-08-30 00:00:00+00:00    0.0  22.51696  -95.47998    30.387840  36.487934\n\n[1977 rows x 5 columns]\n\n\u003e\u003e\u003e \n\n```\n\n----\n\n## Sample notebooks\n\nCheck the demostration [notebooks folder](https://github.com/hmedrano/erddap-python/tree/main/notebooks) for more usage examples of the library classes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmedrano%2Ferddap-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhmedrano%2Ferddap-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmedrano%2Ferddap-python/lists"}