Select to view content in your preferred language

How can distance (north- south) between two isolines be calculated?

1326
3
09-08-2010 06:47 AM
FrankHanssen
Regular Contributor
Perhaps is this a very simple operation (then please forgive my ignorance), but I am not yet sure about how to proceed with this task. I have a vague idea about using euclidian distance for both lines combined with zonal statisics...

The attached figure illustrates the challenge. Any ideas about how to solve it will be highly appreciated.

Frank
0 Kudos
3 Replies
CedricWannaz
Emerging Contributor
Just to clarify, what you want is the average distance in the N-S direction, that could be given for example by averaging the difference in latitude (in radian) between pairs of points belonging to the two lines for a given, discrete set of longitudes, and multiplying the outcome by the earth radius? I am asking because your screenshot is showing a multiple-rings buffer based on the red line, and if you would for example create a narrow buffer around the blue line and perform a zonal stat. of the distance represented by each ring using the narrow buffer as a zone, you would indeed compute a rough estimate of a distance orthogonal to the red line..

I would be interested as well to see an experienced user bringing a sound answer. There are several tricks that I could foresee as a casual GIS user, and I will explain them if needed.

Best regards,

Cedric


PS: what is the scale of your map by the way? After several interactions with ESRI, it seems to me that there is almost no way to perform geodesic computations in ArcGIS and, as there is no global equidistant projection, this is a problem for large scale distance computations. This is an open question to me indeed; I personally perform my geodesic computations with MATLAB and I would be thrilled to open another thread about this point if someone tells me that I am wrong on this PS.
0 Kudos
CedricWannaz
Emerging Contributor
Please read Bill's answer below before going for this trick!
------------------------------------------------------

I hope that you will have a more professional answer, but here is one. There are several options that I can foresee:

- Using specific tools that I don't know.
- Converting lines to raster (that would be the discretization suggested above) and performing some smart operations on rasters (e.g. processing the latitudes of pixels centers).
- Writing some code that reads coordinates of the nodes that define your lines and compute the distance in a more mathematical/numerical way.
- ...
- More manually, a somehow funny solution that consists in creating N-S segments delimited by the two lines and measuring their lengths.

I will develop this last "trick" because it seems to be more fun than the others in the sense that it draws what we have in mind or how we would do it with a ruler. Also, it doesn't involve programming, and I am not knowledgeable enough about the first two options anyway. It took 5 minutes to me (a coffee pause!) to apply it and you'll find illustrations of what I have done in the attached document.

1. Start with the line feature class that contains your isolines (I generated some by hand).

2. Create the largest rectangular box that is fully crossed by the two line (or a little smaller) in the Coordinate System (CS) of the lines.
    - Toolbox/Data Management Tools/Feature Class/Create Feature Class
    - Create a POLYGON feature class in CS as the lines (import from lines).

3. Cut the box with the lines using the topology toolbox in the editor.
    - Choose the box as a target layer, select the two lines with the mouse, click on the topology tool and select split ..
    - Keep the middle chunk and delete the others. Get out of the editor saving your changes.

4. Project it to Geographic Coordinate Systems/World/WGS1984. This is because we will create N-S lines (lines following meridians) and this CS is well suited for that. And at this point we want the box to be compatible with these lines.

5. Create a fishnet covering the remaining chunk of the box with vertical lines. Use the (projected) box/chunk as a template. Set 1 row and as many columns as you want/need for having a good enough estimate. I put 100 for vertical lines to be spaced enough for visual purpose, but you might want to create 1000 columns or more.

6. Intersect the fishnet and the chunk. The output is made of segments of lines that are N-S oriented and delimited by the isolines.

7. Project the intersection in an equidistant CS suited to your case (location, extent). I attached a projections table in case you need it.

8. Open the Attribute Table of the projected intersection. The length on the map of each segment is found in the field Shape_Length, that you can summarize to have the average length for example.


Hope it helps!

Cheers,

Cedric
0 Kudos
CedricWannaz
Emerging Contributor
That average distance, Cedric, is most easily obtained by dividing the area (of the region bounded by two isolines and two vertical lines at the right and left) by the horizontal extent of the region.


I'm so happy seeing the elegance of this answer that it partially makes up for the feeling of embarrassment from my own answer 😉

Cedric


EDIT:
If everything is to be done in spherical coordinates, first we have to answer a more basic question: what, exactly, is the region determined by pieces of two isolines?


I would worry about the horizontal extent actually. If the N-S distance is what is asked, I would define the domain (of interest) as the region of the sphere framed by the two isolines and the most spaced (largest theta) pair of meridians that still touch the two polylines. The area of this region would be, I guess: r^2 \int_{\theta_1}^{\theta_2}\int_{\phi_1(\theta)}^{\phi_2(\theta)}sin(\phi)d\phi d\theta [view], with \theta_1 the longitude of the first meridian, \theta_2 the longitude of the second meridian, \phi_1(\theta) the latitude of the point on the southern isoline defined by longitude \theta, ..., and r the mean radius of the Earth. This can be approximated, if the extent is not too large, by the area of the chunk that I created above in WGS1984, which is the value of its field Shape_Area when projected in a well suited equal area CS. That said, how to define the horizontal extent in such case?
0 Kudos