TerraGo is at ESRI Federal User's Conference
TerraGo has got booth 123 at the ESRI Federal User's Conference. CEO Rick Cobb will be there, along with most of our sales crew.
Collaborating in geospatial context since 2000!
TerraGo has got booth 123 at the ESRI Federal User's Conference. CEO Rick Cobb will be there, along with most of our sales crew.
TerraGo is announcing a new product today called TerraGo Composer for Server. It works like this: you interactively select an area of interest (AOI). Composer grovels around ArcGIS Server finding files and documents associated with the AOI. You pick the types of information of interest, and Composer creates a GeoPDF index map of the AOI with hyperlinks to the documents you selected.
The first ARGON mapping satellite was launched 17 February 1961. The ARGON satellites carried film cameras and ejected film canisters. The imagery was declassified in the Clinton administration. The CORONA, ARGON, and LANYARD satellites exposed more that 2 million feet of film between 1959 and 1972. You can get the imagery and more information from USGS.
Here are the companion (Geo)PostScript and GeoPDF maps to those generated for the worked example. It took me less than 10 minutes to map the TerraGo sytle to the Adobe. We'll delve into the details of what I did in a subsequent post.
The PostScript file from georegistration worked example post contains a full georegisration. If you put some metadata in there to reliably extract that information, well, that PS is GeoPS!
In the georegistration worked example post, we calculated a CTM that takes the page coordinates in points into projected coordinates in meters:
[35.28267 0 0 35.28267 205188.64 3207094.8]
[(35.28267) (0) (0) (35.28267) (205188.64) (3207094.8)]
[]
. Strings are delimited with parens ()
. There are actually two types of numbers: integer and real. These types were implemented in earlier versions of Acrobat as 32 bit objects. Real numbers used a fixed point scheme that traded precision for range. That range was too small to hold values often used in geodesy. More recent versions of Acrobat used IEEE 754 single-precision floats, the precision of which is not sufficient store values for geodesic calculations. Rather than try to shoehorn a syntatic extension that used native PDF numbers directly, we stashed the values into strings and extracted the values based on whether a string appeared in a numeric context.As promised, I created a PostScript file using the information we calculated in the worked example post. I created a GeoPDF file by running the PostScript file through Ghostscript to create a
We're going to work through making a quad sheet and georegistering it. The quad is going to be [90W 29N 89W 30N]. If you're wondering why that quad out of all of the possible quads, it's because I know that 90W 30N hits one of my favorite spots: New Orleans. Let's pick a scale for our quad to be 1:100000, and let's give ourselves one inch margins. We're going to use UTM zone 16 WGS 84 as our coordinate reference system, and I'm going to use GEOTRANS to do the calculations. The the table of longitudes (λ), latitudes (ϕ), eastings and northings is:
λ ϕ E(m) N(m)
-90 29 207729 3211697
-90 30 210590 3322576
-89 30 307085 3320469
-89 29 305179 3209635
[207729 3209635 307085 3322576]
[0 0 2960 3345]
|a c H||h| |x|
|b d V||v| = |y|
|0 0 1||1| |1|
|a 0 H||h| |x|
|0 a V||v| = |y|
|0 0 1||1| |1|
a = (x1 - x0)/(h1 - h0)
H = x0 - a h0
V = y0 - a v0
x0 = 207729
y0 = 3209635
x1 = 307085
h0 = v0 = 72
h1 = 2888
a = 35.28267
H = 205188.64
V = 3207094.8
[35.28267 0 0 35.28267 205188.64 3207094.8]
[0.028343 0.0 0.0 0.028343 -5815.5645 -90897.17]
λ ϕ E(m) N(m) H(pt) V(pt)
-90 29 207729 3211697 72 132
-90 30 210590 3322576 153 3274
-89 30 307085 3320469 2888 3215
-89 29 305179 3209635 2834 74
An anonymous reader asked
I'm not sure that the community needs two specs. What am I missing?
Did I mention that I love the GeoTIFF spec. Allow me to reproduce for you the ASCII art version of the section on it's CTM provision:
ModelTransformationTag
Tag = 34264 (85D8.H)
Type = DOUBLE
N = 16
Owner: JPL Cartographic Applications Group
This tag may be used to specify the transformation
matrix between the raster space (and its dependent
pixel-value space) and the (possibly 3D) model space.
If specified, the tag shall have the following
organization:
ModelTransformationTag = (a,b,c,d,e....m,n,o,p).
where
model image
coords = matrix * coords
|- -| |- -| |- -|
| X | | a b c d | | I |
| | | | | |
| Y | | e f g h | | J |
| | = | | | |
| Z | | i j k l | | K |
| | | | | |
| 1 | | m n o p | | 1 |
|- -| |- -| |- -|
We've discussed the concept and mechanisms of georegistration -- the alignment or registration of two Cartesian coordinate systems (one of which is a projected coordinate system (PCS)) via a coordinate transformation matrix. We take this explicit relationship between a PDF page and a specific PCS, give it a name, delineate a region on the page for which the relationship is valid, and name a preferred display coordinate system, and roll it all up into what we call a map frame. I don't now remember from whence the name, but this one turned out OK, IMO.
Well... maybe yes, probably no. Or vice versa. It's become confusing. When TerraGo products create a GeoPDF file, they do more than just take data, make a picture of it, and stuff a little georegistration payload in the result. For instance, as Adam has pointed out, we take advantage of PDF features to provide a richer, more interactive, PDF file. However, many features often associated with GeoPDF are not unique to GeoPDF. Layers are not unique to GeoPDF. Object data are not unique to GeoPDF. These are "just" features of PDF that anyone with the time and patience can implement. ESRI, Bentley, Safe, and Cadcorp have all done it, although I'm not certain they all embed georegistration payloads.
Like many projects, GeoPDF escaped from the lab before it was fully developed. An implementation detail that may seem bizarre at first glance are the units of the parameters CTM which defines the a GeoPDF georegistration. Recalling the CTM:
[ a b c d H V ]
a
, b
, c
, and d
are in units of meters per point. Parameters H
and V
are in meters. A point in PDF is defined as 1/72 of an inch. What's up with that?One of the key concepts behind GeoPDF is georegistration. We define georegistration as a specific form of georeferencing in which a projected Cartesian coordinate system is registered to a page Cartesian coordinate system using a linear transformation. That is, the relationship between a point in a map to a point in a projected coordinate system is given by:
x = a h + c v + H
y = b h + d v + V
(x, y)
is the projected coordinate, (h, v)
is the page coordinate and a, b, c, d, H,
and V
are the parameters that define the linear relationship. In matrix notation, this can be represented as:
|a c H||h| |x|
|b d V||v| = |y|
|0 0 1||1| |1|
[ a b c d H V ]
I know that Adobe, ESRI, Safe, and Cadcorp all roll their own geospatial PDF files using Adobe's geospatial PDF extensions. Let me know if you or some one you know does as well.
If you would like to create a geospatial PDF file, I strongly recommend georegistration using Adobe's extensions to ISO 32000. Apparently, OGC 08-139r1 has not been posted yet to the OGC best practices repository. I'm lobbying to post it on our corporate website... we'll see how that goes. If you want to get your hands on the spec to get cracking making an indexer or something like that, let me know and I'll get you a copy and some implementation notes. If you want to just see how we did it, open the PDF in a text editor and search for
LGIDict
... I would like to start dissecting what we did and why on this blog in a series of posts.
Customer IANT logged the following enhancement request:
I know it's not going to happen but had a request to make GeoPDF open source and allow how we store all of the georegistration information publicly available.
I've been asked by different folks why I think that conflating GeoPDF with the details of a georegistation technique is not a good idea. My main beef is that it confines GeoPDF to some implementation details and sets it against/in contrast to whatever is georegistered using Adobe's proposed extensions to ISO 32000. I always had a more inclusive vision for GeoPDF. There are several PDF standards: PDF/A, PDF/E, PDF/X, PDF/UA... I imagine that there might be a PDF/G some day (or, perhaps, extensions to PDF/E, e.g., PDF/EG), and I would like to say that "this is a PDF/G-compliant GeoPDF file!" I would like this blog to be a natural home for all things geospatial PDF.
GeoPDF 2.2 OGC 08-139r1 was approved as OGC Best Practice. Personally, I think that the use of GeoPDF was unfortunate, for various reasons, but I'm happy to see the georegistration technique published. If you'd like to roll-your-own geospatial PDF, I'd recommend using Adobe's proposed geospatial extensions to ISO 32000. Our software supports this georegistration technique, and we're already moving in that direction.
Many of you may have noticed that the KML generated from your application does not properly reference any placemark balloon attachments when viewed in Google Earth. This is because those attachments are referenced with a local file path rather than a valid URL that Google Earth is looking for. There used to be a gross work around to get those attached files to display properly which involved web servers and modifications to the KML itself. No More! Google Earth 5.0 added a provision to accept local file paths so now all referenced files in the KML will work regardless of whether or not they are on a web server!
Labels: Google Earth, KML
Google announced today that Google Earth 5.0 has officially been released. This latest release appears to have a few interesting new features that will allow you to view historical imagery from around the globe, ocean floor and surface data as well as the ability to record your GE session! Check out the online tour by clicking here. Enjoy!
Labels: Google Earth