During my internship in the company over the past few days, I found some minor problems when I used ArcGIS Engine for project query and help, which caused me to spend a long time searching for the interfaces and classes I needed, so that I could easily write them down. (The Module I wrote has a Function Based on DEM earthwork calculation, using C #)
1.
In the namespace ESRI. ArcGIS. analyst3d, rastersurface implements the following interface:
Interfaces |
Description |
Ifunctionalsurface (geometry) |
Provides access to information about the functional surface, generating heights given X, Y locations. Also see ifunctionalsurface2. |
Ifunctionalsurface2 (geometry) |
Provides access to Members that allow changes to be made to the interpolation domain, in addition to the ifunctionalsurface members. |
Irastersurface |
Provides access to Members that manipulate and analyze a raster surface. |
Isurface (Geodatabase) |
Provides access to Members that control surfaces. |
Description of isurface. getvolume and other methods under rastersurfaceclass
|
Getsurfacearea |
Returns the tin's area measured on its surface abve or below an input Z value. |
|
Getvolume |
Returns the tin's volume abve or below an input Z value. |
The above only shows the surface area and volume of the returned tin data. I wonder if I need to convert raster into Tin. Because of the large project-related data volume and 40 GB of data, efficiency was taken into consideration, if the conversion may be slow and unacceptable to users, related operations are performed under ArcMap. In actual use, raster is not required to be converted to Tin, I thought there should be related functions in rastersurface to get the surface area of the area corresponding to the raster layer and the volume related to a certain elevation. I will check the object model diagram of rastersurface: in the isurface interface implemented by rastersurface
Getsurfacearea (in referenceheight: Double, in type: esriplanereferencetype): double
Getvolume (in reference: Double, in type: esriplanereferencetype): double
Since there is no corresponding description, I tried to use and calculate the surface area and volume of tin data in the Code and can be directly calculated without the need to convert the format.
2.
Since a polygon parameter is required to pass in the calculation earthwork region, I searched for the Polygon-related parameters in rasterclass, So I queried ifunctionalsurface (geometry) and ifuncitonalsurface2 (geometry ).
Ifuncitonalsurface Interface
|
Attribute or Method |
Description |
|
Domain |
Surface-related classes |
|
Z |
Z = f (x, y ). |
Here, z is marked as an attribute. Actually, it is a method. Using X, Y is worth it to Z value.
[C #]
PublicDoubleGet_z (
DoubleX,
DoubleY
);
If you are familiar with the C # syntax, you should know that the attribute definition in C # Is
Public porperty {
Get {
....
}
Set {
....
}
}
You do not need to input parameters for attributes.
3.
Ifunctionsurface2 Interface
It inherits from ifunctionsurface.
In the rastersurface object model diagram, the ifuncitonalsurface. Domain attribute is read-only, while ifunctionalsurface2.domain is write-only. In help, the domain attribute of ifunctionalsurface and ifunctionalsurface2 is the same link.
When setting the domain attribute, it should be ifunctionalsurface2.domain _ 2 (write only) ifunctionalsurface2.domain (read-only)
(There are still some minor errors in the engine help documentation, which correspond to the object model diagram in actual use. It is most important to try it in the Code .)