¿Extraer límite de capas detalladas en ArcGIS Desktop o QGIS?

10

¿Es posible devolver el perímetro límite (exterior) de una capa de polígono?

Digamos que tiene el mapa de los EE. UU., Por simplicidad, desglosado a nivel de condado, ¿es posible devolver el mapa de límites de todo el país desde ese mapa?

Dassouki
fuente
Entonces, en el caso de los EE. UU., Se refiere a obtener el esquema de los estados, NO el cuadro delimitador, ¿verdad? Si es así, ¿qué tal una disolución de la capa de los condados?
Chad Cooper el
@Chad Cooper: cuando disuelvo la capa, sigo apareciendo algunas líneas para condados y estados.
dassouki

Respuestas:

6

Puede hacer una disolución en la capa del condado (asegúrese de tener seleccionados solo los condados que desea disolver).

Tac194
fuente
Tengo algunas líneas internas que todavía aparecen en disolución.
dassouki
3
¿Se puede almacenar dos veces para eliminar las líneas internas? Fuera, para "comer" las líneas, luego nuevamente dentro, para restaurar el tamaño original.
mwalker
Por alguna razón esto funcionó. Sé que es la solución "más complicada", pero esta fue la única solución que se deshizo de las líneas
dassouki el
1
+1 Esto en realidad es una gran solución. Funciona al acomodar pequeñas astillas y superposiciones en los polígonos componentes (y también supera muchos errores inherentes en el software).
whuber
1
Usé el consejo de mwalker para amortiguar y luego entrar. Espero que puedas incluir eso en tu respuesta.
dassouki el
4

Puede usar el módulo GRASS: v.dissolve solo necesita importar sus datos a GRASS. Aquí hay un reparto en pantalla de la transferencia de sus datos a Grass desde QGis.

dimitris
fuente
3

Permítame conectar mi propio proyecto ... Boundary Generator le proporcionará límites externos e internos de cada polígono (como entidades de línea).

Los límites internos se atribuyen con el FID para cada uno de los dos polígonos que comparten ese borde. Los límites externos deben tener un FID de cero para uno de esos dos, por lo que son fáciles de seleccionar del resultado completo.

Lo bueno de esto vs hacer disoluciones es que he agregado un par de botones sobre la precisión para que pueda manejar datos no del todo perfectos. (¿Qué tan separados deberían estar dos bordes poligonales para considerarse un borde compartido? ¿Cuánta desviación de ángulo se requiere?)

Todavía está en alfa y ha pasado un tiempo desde que aborde una actualización; ¡Me encantaría saber qué tan bien te funciona!

Dan S.
fuente
2
 public static IPolygon getPolygonFromLayer(ILayer layer)
{
            IFeatureLayer FLayer = layer as IFeatureLayer;
            IFeatureClass FClass = FLayer.FeatureClass;
            return polygonMerge(FClass);
}

   private static IPolygon polygonMerge(IFeatureClass featureClass)
        {
            if (featureClass == null) return null;
            IGeoDataset geoDataset = featureClass as IGeoDataset;

            //You can use a spatial filter to create a subset of features to union together. 
            //To do that, uncomment the next line, and set the properties of the spatial filter here.
            //Also, change the first parameter in the IFeatureCursor.Seach method.
            //ISpatialFilter queryFilter = new SpatialFilterClass();

            IGeometry geometryBag = new GeometryBagClass();

            //Define the spatial reference of the bag before adding geometries to it.
            geometryBag.SpatialReference = geoDataset.SpatialReference;

            //Use a nonrecycling cursor so each returned geometry is a separate object. 
            IFeatureCursor featureCursor = featureClass.Search(null, false);

            IGeometryCollection geometryCollection = geometryBag as IGeometryCollection;
            IFeature currentFeature = featureCursor.NextFeature();

            while (currentFeature != null)
            {
                //Add a reference to this feature's geometry to the bag.
                //Since you don't specify the before or after geometry (missing),
                //the currentFeature.Shape IGeometry is added to the end of the geometryCollection.
                object missing = Type.Missing;
                geometryCollection.AddGeometry(currentFeature.Shape, ref missing, ref missing);
                currentFeature = featureCursor.NextFeature();
            }

            // Create the polygon that will be the union of the features returned from the search cursor.
            // The spatial reference of this feature does not need to be set ahead of time. The 
            // ConstructUnion method defines the constructed polygon's spatial reference to be the 
            // same as the input geometry bag.
            ITopologicalOperator unionedPolygon = new PolygonClass();
            unionedPolygon.ConstructUnion(geometryBag as IEnumGeometry);

            return unionedPolygon as IPolygon;
        }

    }
Patricio
fuente
2

Obtiene líneas cuando disuelve porque los límites no son transparentes.

Independientemente del producto de software, haga lo siguiente:

Haz una integración . texto alternativo

Luego disuelve . texto alternativo

Simón
fuente
Lo intenté varias veces, y no funcionó :(, sigo perdiendo algunos polígonos, utilicé una tolerancia muy pequeña y una muy grande también
dassouki
1

Parece que la muestra Bounding Containers publicada en arcgis.com funcionará para lo que desea.

Derek Swingley
fuente
Este es un buen pensamiento, pero es poco probable que esa solución funcione en este fasion. Su objetivo es proporcionar información geométrica adicional sobre las características al encontrar el miembro más pequeño de una clase de formas que contiene las características, como un rectángulo, círculo, elipse o polígono convexo. El resultado es siempre uno de los que contienen formas. En general, no coincidirá exactamente con la forma original a menos que ese límite ya tenga la forma deseada.
whuber
1

Sé que esta es una pregunta antigua, pero creo que la respuesta que acabo de encontrar se introdujo desde las anteriores aquí, así que la comparto para las personas que encuentran esto en una búsqueda.

QGIS (a partir de la versión 2.14 al menos), tiene un "Rellenar agujeros" en la caja de herramientas Procesamiento, en Geoalgoritmos de QGIS> Herramientas de geometría vectorial. Encuentro que disolver formas y luego ejecutar Fill Holes con el parámetro Max area set muy alto resuelve este problema.

Eldan Goldenberg
fuente
0

También puede estar buscando lo que solía llamarse funcionalidad DROPLINE.

Aunque no sobrevivió a la transición de ArcInfo Workstation a ArcGIS Desktop, actualmente existe una idea de ArcGIS para restaurarlo:

Sería bueno tener la opción de soltar las líneas entre los polígonos que tienen los mismos valores para un campo específico. Esta funcionalidad solía estar disponible en ArcPlot como el comando DROPLINE y se usaba ampliamente como una forma de evitar crear un nuevo conjunto de datos con el comando disolver.

PolyGeo
fuente
0

Puede usar la ST_UNIONfunción en PostGIS desde QGIS DB Manager para agregar todos los polígonos en la capa (o muchos grupos de polígonos en polígonos más grandes). De la documentación:

La variante 2 es una función agregada que toma un conjunto de geometrías y las une en una única ST_Geometry que no genera regiones que se crucen

hasta
fuente