Tenho o seguinte código:
String shapeFileZipPath = "path/to/shapefile-test.zip";
File file = new File(shapeFileZipPath);
Map<String, Serializable> map = new HashMap();
map.put("url", file.toURI().toURL());
ShapefileDataStoreFactory dataStoreFactory = new ShapefileDataStoreFactory();
ShapefileDataStore dataStore = (ShapefileDataStore) dataStoreFactory.createDataStore(map);
System.out.println(dataStore);
Quando executo este programa, obtenho:
shapefile-test.zip is not one of the files types that is known to be associated with a shapefile
Quando descompacto o arquivo usando o utilitário de compactação zip do Mac, ele descompacta em uma pasta contendo seis arquivos (.prj, .shp, .shx, .dbf, .qmd, .cpg).
Então esse erro ocorre porque há uma pasta no nível raiz do zip, enquanto o ShapefileDataStoreFactory precisa desses seis arquivos no nível raiz.
Nota: Eu crio o zip usando o comando 'zip -j...'.
O GeoTools não manipula shapefiles compactados, aponte o armazenamento de dados para o
.shp
arquivo ou ashp.gz
e deverá funcionar bem.Observe que você provavelmente deve usar o
Urls.toUrl
método para criar o URL