How to identify time, lon, and lat coordinates in xarray?












3















What is the best way to determine which coordinates of an xarray dataArray object contain longitude, latitude and time?



A typical dataArray might look like this:



<xarray.Dataset>
Dimensions: (ensemble: 9, lat: 224, lon: 464, time: 12054)
Coordinates:
* lat (lat) float64 25.06 25.19 25.31 25.44 ... 52.56 52.69 52.81 52.94
* lon (lon) float64 -124.9 -124.8 -124.7 ... -67.31 -67.19 -67.06
* time (time) datetime64[ns] 1980-01-01 1980-01-02 ... 2012-12-31
Dimensions without coordinates: ensemble
Data variables:
elevation (lat, lon) float64 dask.array<shape=(224, 464), chunksize=(224, 464)>
temp (ensemble, time, lat, lon) float64 dask.array<shape=(9, 12054, 224, 464), chunksize=(1, 287, 224, 464)>


One approach could be to loop through the variables identified by the variable coords, like temp.coords, looking for the standard_name attributes of time, longitude, and latitude. But many datasets don't seem to include standard_name attributes for all variables.



I guess another approach be to search over the units attributes and try to identify if they have appropriate units attributes (e.g. degrees_east or degrees_west for longitude, etc).



Is there a better way?










share|improve this question




















  • 1





    I just loop and look for latitude/lat and longitude/lon. Is there a convention outlined somewhere? time/date/day/etc. are also tough. some common climate data library with climate_toolz.standardize_dims would be great.

    – delgadom
    Nov 26 '18 at 1:56
















3















What is the best way to determine which coordinates of an xarray dataArray object contain longitude, latitude and time?



A typical dataArray might look like this:



<xarray.Dataset>
Dimensions: (ensemble: 9, lat: 224, lon: 464, time: 12054)
Coordinates:
* lat (lat) float64 25.06 25.19 25.31 25.44 ... 52.56 52.69 52.81 52.94
* lon (lon) float64 -124.9 -124.8 -124.7 ... -67.31 -67.19 -67.06
* time (time) datetime64[ns] 1980-01-01 1980-01-02 ... 2012-12-31
Dimensions without coordinates: ensemble
Data variables:
elevation (lat, lon) float64 dask.array<shape=(224, 464), chunksize=(224, 464)>
temp (ensemble, time, lat, lon) float64 dask.array<shape=(9, 12054, 224, 464), chunksize=(1, 287, 224, 464)>


One approach could be to loop through the variables identified by the variable coords, like temp.coords, looking for the standard_name attributes of time, longitude, and latitude. But many datasets don't seem to include standard_name attributes for all variables.



I guess another approach be to search over the units attributes and try to identify if they have appropriate units attributes (e.g. degrees_east or degrees_west for longitude, etc).



Is there a better way?










share|improve this question




















  • 1





    I just loop and look for latitude/lat and longitude/lon. Is there a convention outlined somewhere? time/date/day/etc. are also tough. some common climate data library with climate_toolz.standardize_dims would be great.

    – delgadom
    Nov 26 '18 at 1:56














3












3








3








What is the best way to determine which coordinates of an xarray dataArray object contain longitude, latitude and time?



A typical dataArray might look like this:



<xarray.Dataset>
Dimensions: (ensemble: 9, lat: 224, lon: 464, time: 12054)
Coordinates:
* lat (lat) float64 25.06 25.19 25.31 25.44 ... 52.56 52.69 52.81 52.94
* lon (lon) float64 -124.9 -124.8 -124.7 ... -67.31 -67.19 -67.06
* time (time) datetime64[ns] 1980-01-01 1980-01-02 ... 2012-12-31
Dimensions without coordinates: ensemble
Data variables:
elevation (lat, lon) float64 dask.array<shape=(224, 464), chunksize=(224, 464)>
temp (ensemble, time, lat, lon) float64 dask.array<shape=(9, 12054, 224, 464), chunksize=(1, 287, 224, 464)>


One approach could be to loop through the variables identified by the variable coords, like temp.coords, looking for the standard_name attributes of time, longitude, and latitude. But many datasets don't seem to include standard_name attributes for all variables.



I guess another approach be to search over the units attributes and try to identify if they have appropriate units attributes (e.g. degrees_east or degrees_west for longitude, etc).



Is there a better way?










share|improve this question
















What is the best way to determine which coordinates of an xarray dataArray object contain longitude, latitude and time?



A typical dataArray might look like this:



<xarray.Dataset>
Dimensions: (ensemble: 9, lat: 224, lon: 464, time: 12054)
Coordinates:
* lat (lat) float64 25.06 25.19 25.31 25.44 ... 52.56 52.69 52.81 52.94
* lon (lon) float64 -124.9 -124.8 -124.7 ... -67.31 -67.19 -67.06
* time (time) datetime64[ns] 1980-01-01 1980-01-02 ... 2012-12-31
Dimensions without coordinates: ensemble
Data variables:
elevation (lat, lon) float64 dask.array<shape=(224, 464), chunksize=(224, 464)>
temp (ensemble, time, lat, lon) float64 dask.array<shape=(9, 12054, 224, 464), chunksize=(1, 287, 224, 464)>


One approach could be to loop through the variables identified by the variable coords, like temp.coords, looking for the standard_name attributes of time, longitude, and latitude. But many datasets don't seem to include standard_name attributes for all variables.



I guess another approach be to search over the units attributes and try to identify if they have appropriate units attributes (e.g. degrees_east or degrees_west for longitude, etc).



Is there a better way?







python python-xarray






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 29 '18 at 14:24







Rich Signell

















asked Nov 25 '18 at 16:27









Rich SignellRich Signell

8,01922757




8,01922757








  • 1





    I just loop and look for latitude/lat and longitude/lon. Is there a convention outlined somewhere? time/date/day/etc. are also tough. some common climate data library with climate_toolz.standardize_dims would be great.

    – delgadom
    Nov 26 '18 at 1:56














  • 1





    I just loop and look for latitude/lat and longitude/lon. Is there a convention outlined somewhere? time/date/day/etc. are also tough. some common climate data library with climate_toolz.standardize_dims would be great.

    – delgadom
    Nov 26 '18 at 1:56








1




1





I just loop and look for latitude/lat and longitude/lon. Is there a convention outlined somewhere? time/date/day/etc. are also tough. some common climate data library with climate_toolz.standardize_dims would be great.

– delgadom
Nov 26 '18 at 1:56





I just loop and look for latitude/lat and longitude/lon. Is there a convention outlined somewhere? time/date/day/etc. are also tough. some common climate data library with climate_toolz.standardize_dims would be great.

– delgadom
Nov 26 '18 at 1:56












4 Answers
4






active

oldest

votes


















2














The MetPy package includes some helpers for systematic coordinate identification like this. You can see the basics of how this works in the xarray with MetPy tutorial. For example, if you want the time coordinate of a DataArray called temp (assuming it came from a dataset that has been parsed by MetPy), you would simply call:



temp.metpy.time


This is done internally by parsing the coordinate metadata according to the CF conventions.



Here's a short example:



import xarray as xr
import metpy.calc as mpcalc

ds = xr.tutorial.load_dataset('air_temperature')
ds = ds.metpy.parse_cf()

x,y,t = ds['air'].metpy.coordinates('x','y','time')

print([coord.name for coord in (x, y, t)])


which produces:



['lon', 'lat', 'time']





share|improve this answer


























  • When I first tried installing metpy into my conda environment, it wanted to upgrade and downgrade a bunch of stuff. For this coordinate identification it was sufficient to use conda install -c conda-forge metpy pint pooch --no-deps.

    – Rich Signell
    Nov 28 '18 at 22:11





















0














You can probably do something similar to the code below with xarray filter_by:



def x_axis(nc):
xnames = ['longitude', 'grid_longitude', 'projection_x_coordinate']
xunits = [
'degrees_east',
'degree_east',
'degree_E',
'degrees_E',
'degreeE',
'degreesE',
]
xvars = list(set(
nc.get_variables_by_attributes(
axis=lambda x: x and str(x).lower() == 'x'
) +
nc.get_variables_by_attributes(
standard_name=lambda x: x and str(x).lower() in xnames
) +
nc.get_variables_by_attributes(
units=lambda x: x and str(x).lower() in xunits
)
))
return xvars





share|improve this answer































    0














    I think we should lean heavily on CF conventions. They exist precisely for this reason. So I would recommend separating this problem into two parts:




    • Fixing non-CF-complaint datasets (perhaps a small library for this purpose would make sense--it could contain the logic to translate common variable names into appropriate standard_name attributes)

    • Parsing CF-complaint datasets (can leverage standard_name attributes)






    share|improve this answer
























    • I like this idea. Could standard_name also be provided by an Intake Catalog?

      – Rich Signell
      Nov 27 '18 at 14:43





















    0














    If you are looking for just the special coords that act as indexes, then you can iterate over the ds.indexes and do some string parsing on their names. Something like:



    ds = xr.tutorial.load_dataset('air_temperature')
    ds.lat.attrs.pop('standard_name')

    for k in ds.indexes.keys():
    v = ds[k]
    sn = v.attrs.get('standard_name')
    if not sn:
    if 'lon' in k:
    v.attrs.update(standard_name='longitude')
    continue
    if 'lat' in k:
    v.attrs.update(standard_name='latitude')
    continue
    if 'time' in k or k in ['day', 't', 'month', 'year']:
    v.attrs.update(standard_name='time')





    share|improve this answer

























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53469510%2fhow-to-identify-time-lon-and-lat-coordinates-in-xarray%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      4 Answers
      4






      active

      oldest

      votes








      4 Answers
      4






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      2














      The MetPy package includes some helpers for systematic coordinate identification like this. You can see the basics of how this works in the xarray with MetPy tutorial. For example, if you want the time coordinate of a DataArray called temp (assuming it came from a dataset that has been parsed by MetPy), you would simply call:



      temp.metpy.time


      This is done internally by parsing the coordinate metadata according to the CF conventions.



      Here's a short example:



      import xarray as xr
      import metpy.calc as mpcalc

      ds = xr.tutorial.load_dataset('air_temperature')
      ds = ds.metpy.parse_cf()

      x,y,t = ds['air'].metpy.coordinates('x','y','time')

      print([coord.name for coord in (x, y, t)])


      which produces:



      ['lon', 'lat', 'time']





      share|improve this answer


























      • When I first tried installing metpy into my conda environment, it wanted to upgrade and downgrade a bunch of stuff. For this coordinate identification it was sufficient to use conda install -c conda-forge metpy pint pooch --no-deps.

        – Rich Signell
        Nov 28 '18 at 22:11


















      2














      The MetPy package includes some helpers for systematic coordinate identification like this. You can see the basics of how this works in the xarray with MetPy tutorial. For example, if you want the time coordinate of a DataArray called temp (assuming it came from a dataset that has been parsed by MetPy), you would simply call:



      temp.metpy.time


      This is done internally by parsing the coordinate metadata according to the CF conventions.



      Here's a short example:



      import xarray as xr
      import metpy.calc as mpcalc

      ds = xr.tutorial.load_dataset('air_temperature')
      ds = ds.metpy.parse_cf()

      x,y,t = ds['air'].metpy.coordinates('x','y','time')

      print([coord.name for coord in (x, y, t)])


      which produces:



      ['lon', 'lat', 'time']





      share|improve this answer


























      • When I first tried installing metpy into my conda environment, it wanted to upgrade and downgrade a bunch of stuff. For this coordinate identification it was sufficient to use conda install -c conda-forge metpy pint pooch --no-deps.

        – Rich Signell
        Nov 28 '18 at 22:11
















      2












      2








      2







      The MetPy package includes some helpers for systematic coordinate identification like this. You can see the basics of how this works in the xarray with MetPy tutorial. For example, if you want the time coordinate of a DataArray called temp (assuming it came from a dataset that has been parsed by MetPy), you would simply call:



      temp.metpy.time


      This is done internally by parsing the coordinate metadata according to the CF conventions.



      Here's a short example:



      import xarray as xr
      import metpy.calc as mpcalc

      ds = xr.tutorial.load_dataset('air_temperature')
      ds = ds.metpy.parse_cf()

      x,y,t = ds['air'].metpy.coordinates('x','y','time')

      print([coord.name for coord in (x, y, t)])


      which produces:



      ['lon', 'lat', 'time']





      share|improve this answer















      The MetPy package includes some helpers for systematic coordinate identification like this. You can see the basics of how this works in the xarray with MetPy tutorial. For example, if you want the time coordinate of a DataArray called temp (assuming it came from a dataset that has been parsed by MetPy), you would simply call:



      temp.metpy.time


      This is done internally by parsing the coordinate metadata according to the CF conventions.



      Here's a short example:



      import xarray as xr
      import metpy.calc as mpcalc

      ds = xr.tutorial.load_dataset('air_temperature')
      ds = ds.metpy.parse_cf()

      x,y,t = ds['air'].metpy.coordinates('x','y','time')

      print([coord.name for coord in (x, y, t)])


      which produces:



      ['lon', 'lat', 'time']






      share|improve this answer














      share|improve this answer



      share|improve this answer








      edited Nov 29 '18 at 14:23









      Rich Signell

      8,01922757




      8,01922757










      answered Nov 27 '18 at 23:37









      Jon ThielenJon Thielen

      1013




      1013













      • When I first tried installing metpy into my conda environment, it wanted to upgrade and downgrade a bunch of stuff. For this coordinate identification it was sufficient to use conda install -c conda-forge metpy pint pooch --no-deps.

        – Rich Signell
        Nov 28 '18 at 22:11





















      • When I first tried installing metpy into my conda environment, it wanted to upgrade and downgrade a bunch of stuff. For this coordinate identification it was sufficient to use conda install -c conda-forge metpy pint pooch --no-deps.

        – Rich Signell
        Nov 28 '18 at 22:11



















      When I first tried installing metpy into my conda environment, it wanted to upgrade and downgrade a bunch of stuff. For this coordinate identification it was sufficient to use conda install -c conda-forge metpy pint pooch --no-deps.

      – Rich Signell
      Nov 28 '18 at 22:11







      When I first tried installing metpy into my conda environment, it wanted to upgrade and downgrade a bunch of stuff. For this coordinate identification it was sufficient to use conda install -c conda-forge metpy pint pooch --no-deps.

      – Rich Signell
      Nov 28 '18 at 22:11















      0














      You can probably do something similar to the code below with xarray filter_by:



      def x_axis(nc):
      xnames = ['longitude', 'grid_longitude', 'projection_x_coordinate']
      xunits = [
      'degrees_east',
      'degree_east',
      'degree_E',
      'degrees_E',
      'degreeE',
      'degreesE',
      ]
      xvars = list(set(
      nc.get_variables_by_attributes(
      axis=lambda x: x and str(x).lower() == 'x'
      ) +
      nc.get_variables_by_attributes(
      standard_name=lambda x: x and str(x).lower() in xnames
      ) +
      nc.get_variables_by_attributes(
      units=lambda x: x and str(x).lower() in xunits
      )
      ))
      return xvars





      share|improve this answer




























        0














        You can probably do something similar to the code below with xarray filter_by:



        def x_axis(nc):
        xnames = ['longitude', 'grid_longitude', 'projection_x_coordinate']
        xunits = [
        'degrees_east',
        'degree_east',
        'degree_E',
        'degrees_E',
        'degreeE',
        'degreesE',
        ]
        xvars = list(set(
        nc.get_variables_by_attributes(
        axis=lambda x: x and str(x).lower() == 'x'
        ) +
        nc.get_variables_by_attributes(
        standard_name=lambda x: x and str(x).lower() in xnames
        ) +
        nc.get_variables_by_attributes(
        units=lambda x: x and str(x).lower() in xunits
        )
        ))
        return xvars





        share|improve this answer


























          0












          0








          0







          You can probably do something similar to the code below with xarray filter_by:



          def x_axis(nc):
          xnames = ['longitude', 'grid_longitude', 'projection_x_coordinate']
          xunits = [
          'degrees_east',
          'degree_east',
          'degree_E',
          'degrees_E',
          'degreeE',
          'degreesE',
          ]
          xvars = list(set(
          nc.get_variables_by_attributes(
          axis=lambda x: x and str(x).lower() == 'x'
          ) +
          nc.get_variables_by_attributes(
          standard_name=lambda x: x and str(x).lower() in xnames
          ) +
          nc.get_variables_by_attributes(
          units=lambda x: x and str(x).lower() in xunits
          )
          ))
          return xvars





          share|improve this answer













          You can probably do something similar to the code below with xarray filter_by:



          def x_axis(nc):
          xnames = ['longitude', 'grid_longitude', 'projection_x_coordinate']
          xunits = [
          'degrees_east',
          'degree_east',
          'degree_E',
          'degrees_E',
          'degreeE',
          'degreesE',
          ]
          xvars = list(set(
          nc.get_variables_by_attributes(
          axis=lambda x: x and str(x).lower() == 'x'
          ) +
          nc.get_variables_by_attributes(
          standard_name=lambda x: x and str(x).lower() in xnames
          ) +
          nc.get_variables_by_attributes(
          units=lambda x: x and str(x).lower() in xunits
          )
          ))
          return xvars






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 27 '18 at 13:58









          ocefpafocefpaf

          394214




          394214























              0














              I think we should lean heavily on CF conventions. They exist precisely for this reason. So I would recommend separating this problem into two parts:




              • Fixing non-CF-complaint datasets (perhaps a small library for this purpose would make sense--it could contain the logic to translate common variable names into appropriate standard_name attributes)

              • Parsing CF-complaint datasets (can leverage standard_name attributes)






              share|improve this answer
























              • I like this idea. Could standard_name also be provided by an Intake Catalog?

                – Rich Signell
                Nov 27 '18 at 14:43


















              0














              I think we should lean heavily on CF conventions. They exist precisely for this reason. So I would recommend separating this problem into two parts:




              • Fixing non-CF-complaint datasets (perhaps a small library for this purpose would make sense--it could contain the logic to translate common variable names into appropriate standard_name attributes)

              • Parsing CF-complaint datasets (can leverage standard_name attributes)






              share|improve this answer
























              • I like this idea. Could standard_name also be provided by an Intake Catalog?

                – Rich Signell
                Nov 27 '18 at 14:43
















              0












              0








              0







              I think we should lean heavily on CF conventions. They exist precisely for this reason. So I would recommend separating this problem into two parts:




              • Fixing non-CF-complaint datasets (perhaps a small library for this purpose would make sense--it could contain the logic to translate common variable names into appropriate standard_name attributes)

              • Parsing CF-complaint datasets (can leverage standard_name attributes)






              share|improve this answer













              I think we should lean heavily on CF conventions. They exist precisely for this reason. So I would recommend separating this problem into two parts:




              • Fixing non-CF-complaint datasets (perhaps a small library for this purpose would make sense--it could contain the logic to translate common variable names into appropriate standard_name attributes)

              • Parsing CF-complaint datasets (can leverage standard_name attributes)







              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered Nov 27 '18 at 14:05









              RyanRyan

              20119




              20119













              • I like this idea. Could standard_name also be provided by an Intake Catalog?

                – Rich Signell
                Nov 27 '18 at 14:43





















              • I like this idea. Could standard_name also be provided by an Intake Catalog?

                – Rich Signell
                Nov 27 '18 at 14:43



















              I like this idea. Could standard_name also be provided by an Intake Catalog?

              – Rich Signell
              Nov 27 '18 at 14:43







              I like this idea. Could standard_name also be provided by an Intake Catalog?

              – Rich Signell
              Nov 27 '18 at 14:43













              0














              If you are looking for just the special coords that act as indexes, then you can iterate over the ds.indexes and do some string parsing on their names. Something like:



              ds = xr.tutorial.load_dataset('air_temperature')
              ds.lat.attrs.pop('standard_name')

              for k in ds.indexes.keys():
              v = ds[k]
              sn = v.attrs.get('standard_name')
              if not sn:
              if 'lon' in k:
              v.attrs.update(standard_name='longitude')
              continue
              if 'lat' in k:
              v.attrs.update(standard_name='latitude')
              continue
              if 'time' in k or k in ['day', 't', 'month', 'year']:
              v.attrs.update(standard_name='time')





              share|improve this answer






























                0














                If you are looking for just the special coords that act as indexes, then you can iterate over the ds.indexes and do some string parsing on their names. Something like:



                ds = xr.tutorial.load_dataset('air_temperature')
                ds.lat.attrs.pop('standard_name')

                for k in ds.indexes.keys():
                v = ds[k]
                sn = v.attrs.get('standard_name')
                if not sn:
                if 'lon' in k:
                v.attrs.update(standard_name='longitude')
                continue
                if 'lat' in k:
                v.attrs.update(standard_name='latitude')
                continue
                if 'time' in k or k in ['day', 't', 'month', 'year']:
                v.attrs.update(standard_name='time')





                share|improve this answer




























                  0












                  0








                  0







                  If you are looking for just the special coords that act as indexes, then you can iterate over the ds.indexes and do some string parsing on their names. Something like:



                  ds = xr.tutorial.load_dataset('air_temperature')
                  ds.lat.attrs.pop('standard_name')

                  for k in ds.indexes.keys():
                  v = ds[k]
                  sn = v.attrs.get('standard_name')
                  if not sn:
                  if 'lon' in k:
                  v.attrs.update(standard_name='longitude')
                  continue
                  if 'lat' in k:
                  v.attrs.update(standard_name='latitude')
                  continue
                  if 'time' in k or k in ['day', 't', 'month', 'year']:
                  v.attrs.update(standard_name='time')





                  share|improve this answer















                  If you are looking for just the special coords that act as indexes, then you can iterate over the ds.indexes and do some string parsing on their names. Something like:



                  ds = xr.tutorial.load_dataset('air_temperature')
                  ds.lat.attrs.pop('standard_name')

                  for k in ds.indexes.keys():
                  v = ds[k]
                  sn = v.attrs.get('standard_name')
                  if not sn:
                  if 'lon' in k:
                  v.attrs.update(standard_name='longitude')
                  continue
                  if 'lat' in k:
                  v.attrs.update(standard_name='latitude')
                  continue
                  if 'time' in k or k in ['day', 't', 'month', 'year']:
                  v.attrs.update(standard_name='time')






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Nov 27 '18 at 14:21

























                  answered Nov 27 '18 at 14:05









                  jsignelljsignell

                  8861713




                  8861713






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53469510%2fhow-to-identify-time-lon-and-lat-coordinates-in-xarray%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Wiesbaden

                      Marschland

                      Dieringhausen