是否可以在不指定文件的 url 的情况下使用 geotools 读取 shapefile?
Is it possible to read a shapefile using geotools WITHOUT specifying the url of the file?
我正在创建一个 Web 应用程序,它允许上传形状文件以供稍后在程序中使用。我希望能够将上传的 shapefile 读入内存并从中提取一些信息,而无需对磁盘进行任何显式写入。我正在使用的框架 (play-framework) 会在上传文件时自动将临时文件写入磁盘,但它可以很好地为我处理所述文件的创建和删除。然而,这个文件没有任何扩展名,所以通过 Geotools 读取 shapefile 的传统方法,就像这样
public void readInShpAndDoStuff(File the_upload){
Map<String, Serializable> map = new HashMap<>();
map.put( "url", the_upload.toURI().toURL() );
DataStore dataStore = DataStoreFinder.getDataStore( map );
}
失败,异常状态为
NAME_OF_TMP_FILE_HERE is not one of the files types that is known to be associated with a shapefile
查看 Geotools 的源代码后,我发现文件类型是通过查看文件扩展名来检查的,因为这是一个 tmp 文件,所以它有 none。 (运行 file FILENAME
表明 OS 将此文件识别为 shapefile)。
所以最后我的问题是,有没有办法在不指定 Url 的情况下读取 shapefile?某些函数或构造函数将 File 对象作为参数并且不依赖于路径?还是太麻烦了,我应该在磁盘上保存一份副本?后一种选择不是可取的,因为这可能会在某个时候在 VM 服务器上运行,我不想处理文件系统特定的东西。
在此先感谢您的帮助!
我看不出这对你有什么用,一个 shapefile(尽管它的名字)是一组 3 个(或更多)文件,它们共享一个基本名称并具有 .shp、.dbf 的扩展名, .sbx(通常是 .prj、.sbn、.fix、.qix 等)。
有什么办法可以让游戏用临时文件名编写扩展名吗?
我正在创建一个 Web 应用程序,它允许上传形状文件以供稍后在程序中使用。我希望能够将上传的 shapefile 读入内存并从中提取一些信息,而无需对磁盘进行任何显式写入。我正在使用的框架 (play-framework) 会在上传文件时自动将临时文件写入磁盘,但它可以很好地为我处理所述文件的创建和删除。然而,这个文件没有任何扩展名,所以通过 Geotools 读取 shapefile 的传统方法,就像这样
public void readInShpAndDoStuff(File the_upload){
Map<String, Serializable> map = new HashMap<>();
map.put( "url", the_upload.toURI().toURL() );
DataStore dataStore = DataStoreFinder.getDataStore( map );
}
失败,异常状态为
NAME_OF_TMP_FILE_HERE is not one of the files types that is known to be associated with a shapefile
查看 Geotools 的源代码后,我发现文件类型是通过查看文件扩展名来检查的,因为这是一个 tmp 文件,所以它有 none。 (运行 file FILENAME
表明 OS 将此文件识别为 shapefile)。
所以最后我的问题是,有没有办法在不指定 Url 的情况下读取 shapefile?某些函数或构造函数将 File 对象作为参数并且不依赖于路径?还是太麻烦了,我应该在磁盘上保存一份副本?后一种选择不是可取的,因为这可能会在某个时候在 VM 服务器上运行,我不想处理文件系统特定的东西。
在此先感谢您的帮助!
我看不出这对你有什么用,一个 shapefile(尽管它的名字)是一组 3 个(或更多)文件,它们共享一个基本名称并具有 .shp、.dbf 的扩展名, .sbx(通常是 .prj、.sbn、.fix、.qix 等)。
有什么办法可以让游戏用临时文件名编写扩展名吗?