извлечь геометрию в шепфиле .shp - PullRequest
0 голосов
/ 06 мая 2018

Я хочу извлечь некоторые данные из шейп-файла, У меня есть эта функция, которая может прочитать файл шейп-файла, показать на карте Я могу прочитать некоторую информацию, но я потерян с извлечением много информации в этом файле

public class Quickstart {                 
            public static void main(String[] args) throws Exception {
                // display a data store file chooser dialog for shapefiles
                File file = JFileDataStoreChooser.showOpenFile("shp", null);
                if (file == null) {
                    return;
                }        
                FileDataStore dataStore = FileDataStoreFinder.getDataStore(file);
                //SimpleFeatureSource featureSource = dataStore.getFeatureSource();                        
                String t = dataStore.getTypeNames()[0];
                SimpleFeatureSource featureSource = dataStore.getFeatureSource(t);                
                SimpleFeatureType schema = featureSource.getSchema();
                //String geomType = schema.getGeometryDescriptor().getType().getBinding().getName();
                GeometryDescriptor geom = schema.getGeometryDescriptor();                                     
                List<AttributeDescriptor> attributes = schema.getAttributeDescriptors();
                GeometryType geomType = null;
                List<AttributeDescriptor> attribs = new ArrayList<AttributeDescriptor>();
                for (AttributeDescriptor attrib : attributes) {
                    AttributeType type = attrib.getType();
                    if (type instanceof GeometryType) {
                        geomType = (GeometryType) type;       
                    } else {
                        attribs.add(attrib);
                    }
                }
                GeometryTypeImpl gt = new GeometryTypeImpl(
                        new NameImpl("the_geom"), geomType.getBinding(),
                        geomType.getCoordinateReferenceSystem(),
                        geomType.isIdentified(), geomType.isAbstract(),
                        geomType.getRestrictions(), geomType.getSuper(),
                        geomType.getDescription());               
                GeometryDescriptor geomDesc = new GeometryDescriptorImpl(
                        gt, new NameImpl("the_geom"),
                        geom.getMinOccurs(), geom.getMaxOccurs(),
                        geom.isNillable(), geom.getDefaultValue());        
                attribs.add(0, geomDesc);           
                SimpleFeatureType shpType = new SimpleFeatureTypeImpl(
                        schema.getName(), attribs, geomDesc,
                        schema.isAbstract(), schema.getRestrictions(),
                        schema.getSuper(), schema.getDescription());                
                dataStore.createSchema(shpType);                        
                CachingFeatureSource cache = new CachingFeatureSource(featureSource);
                        // Create a map context and add our shapefile to it
                MapContext map = new DefaultMapContext();
                map.setTitle("Using cached features");
                map.addLayer(cache, null);        
                // Now display the map
                JMapFrame.showMap(map);
            }

я хочу извлечь эту информацию:

 POLYGON((0.6883 49.4666,0.6836 49.4664,0.6836 49.4663,0.6841 49.466,0.6844 49.4658,0.6847 49.4653,0.685 49.465,
    0.6852 49.4646,0.6865 49.4624,0.6868 49.4621,0.6869 49.4618,0.6873 49.4617,0.6874 49.4617,0.6878 49.4616,0.6884 49.4615,
    0.6898 49.4614,0.6909 49.4613,0.6909 49.4618,0.6913 49.4618,0.6906 49.4667,0.6883 49.4666))

Я не знаю, как это сделать Пожалуйста, помогите

1 Ответ

0 голосов
/ 07 мая 2018

Трудно понять, как этот фрагмент возвращает вам какие-либо атрибуты.

Если вы хотите geometry функции, вам нужно использовать

Geometry geom = feature.getDefaultGeometry();

чтобы записать его в виде общеизвестного текста (WKT), вы можете использовать метод .toString() или WKTWriter, чтобы дать вам больший контроль над форматированием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...