5 votos

Cómo establecer la extensión de un mapa en millas

Quiero establecer la extensión del mapa en un sobre cuyos tamaños son definidos por el usuario en millas (kilómetros, cualquier unidad legible para el ser humano). ¿Cómo hacerlo? Escribí el siguiente código:

static void ZoomToPoint(IActiveView focusMap, ExportJson2Feature.Geometry geom)
{
    IPoint point = new PointClass();
    point.PutCoords(geom.X, geom.Y);

    IEnvelope newExtentEnvelope = point.Envelope;
    newExtentEnvelope.Expand(1, 1, false);
    ((IGeometry)newExtentEnvelope).Project( ((IMap)focusMap).SpatialReference );
    focusMap.Extent = newExtentEnvelope;
}

¿Cómo hacer que sepa que el tamañoX/tamañoY están en millas?

7voto

Nathan Bedford Puntos 3157

Las coordenadas de la geometría se especifican siempre en las unidades de su referencia espacial. Las conversiones de unidades se realizan mejor utilizando el botón UnitConverter clase.

Si le sirve de ayuda, puede determinar las unidades de mapa utilizadas actualmente mediante IMap.MapUnits .

Si las coordenadas de sus puntos están en lat/lon (como la referencia espacial WGS84), probablemente quiera decidir primero un sistema de coordenadas proyectado y utilizarlo cuando trabaje con distancias.

1voto

ecathell Puntos 128

Si su extensión va a cubrir un gran rango de latitudes o zonas cercanas a los polos, puede beneficiarse de calcular la extensión utilizando una distancia geodésica desde el centroide.

Puede utilizar IConstructGeodetic.ConstructGeodesicCircle para crear un polígono. A continuación, puede invocar IGeometry.Envelope para conseguir un sobre.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X