Export georeferenced geometry?

Is it possible to export georeferenced geometry from Rhino?

I want to get this boundary/box into a georeference format that’s readable by ArcGIS:

I’m working on a 3D context model, using .shp files from the city’s open data site and put into Heron. I’d like to have an accurate and hi res aerial image to drape over the topography surface I constructed. I got close with the one taken from Heron, but had to manually manipulate it to fit the boundary properly.

A colleague and I would like to take a boundary defined in Rhino and export it into ArcGIS so that we have the same geometry to reference. I tried exporting .dwg and .dxf but it doesn’t retain the location information. Also tried writing a shape file using ShrimpGIS but that had other issues I haven’t yet been able to troubleshoot (ended up being skewed from the original boundary, and it only worked on my PC vs my work computer, a Mac). So far the work around is for him to export an image roughly the same extents and manipulate it manually to get the right extents.

Thanks!
V

Hello - EarthAnchorPoint may help, though I do not know how dwg interprets that info-
https://docs.mcneel.com/rhino/7/help/en-us/index.htm#commands/earthanchorpoint.htm#(null)

-Pascal

Hi Vivian,
You may not need to go through ArcGIS to get a raster satellite image mapped to the ground surface. Heron has a few ways of getting georeferenced raster images into GH which can then be texture mapped and baked using Human components (see setup below).


20210826_KelownaBC2.gh (29.1 KB)

-Brian

2 Likes

Hi Brian,

I have a fairly crude understanding … a term I have heard used on other applications is Geoid, relating to a specific geographic location.

How does Geoid relate to EarthAnchorPoint, or is it something completely different?

Honestly, I haven’t heard of GEOID before, but it seems to be a way of locating a point on earth with words and/or codes instead of lat/lon numbers. A good example of this would be the WhatThreeWords addressing system (what3words /// The simplest way to talk about location). The EarthAnchorPoint in Rhino assigns a lat/lon coordinate to your 0,0 origin and doesn’t directly relate to a GEOID. By setting the EAP close to the data you are importing into Rhino, you will avoid large distortions in the geometry and floating point errors that come with geometry being very far from the origin.

Does EarthAnchorPoint consider a curvature of the earth’s surface at all or is a flat plane assumed?

Rhino uses a Cartesian coordinate system (XYZ), so basically a flat plane. To go from the curved surface of the earth to a flat plane or vice versa, RhinoCommon has a built-in function called EarthAnchorPoint.GetModelToEarthTransform (EarthAnchorPoint.GetModelToEarthTransform Method
) based on the Geographical Coordinate System WGS84. Heron relies heavily on this transform.

Like with any conversion from the curved surface of the earth to a flat surface, distortions happen, but they are fairly minor at the scale of a city or smaller. Though small they do get worse the closer you get to the poles with WGS84, which is why using a Projected Coordinate System such as UTM Zones may be preferred (Coordinate Systems: What’s the Difference?). Currently Heron is limited in it’s use of Projected Coordinate Systems, but I plan to eventually have a global override for Heron components to use whatever coordinate system makes sense. For now, going between coordinate systems can be handled with the CoordinateTranformation component.

Hi Brian,

Thanks for this workflow - this is great! Super effective for generating a quick topo and mapped image. I’m really appreciating all these powerful tools in Heron.

Is 2048 the max resolution possible for the raster satellite image?

-Viv

Hi Vivian,
Glad they’re useful! Typically the max size of a raster image from an ArcGIS REST service is 2048px, but can be 4096px, depending on the service. If you want a hi-res image over a large surface, you can either subdivide your boundary into tiles and feed the list of tile boundaries into the RESTRaster component, or use the SlippyRaster component and crank up the zoom level (max zoom is usually around 19). I prefer the latter, but be prepared to wait if you have a large area at a high zoom level. Also keep in mind these services are free, so try not to overload them with requests (ie don’t try to get all of BC at zoom level 19) :slight_smile:
-Brian