我正在用 python 编写一些后端脚本,这些脚本必须与使用 django 的 Web 界面相结合。
Web 应用程序允许查看来自不同 Web 服务的图层。作为我任务的一部分,我开发了一个工具,可以从地理服务器(WCS 服务)请求高程数据,然后根据用户在前端绘制的先前线条,能够生成基础数据的横截面.
所以,简而言之:当用户在图层上绘制一条线,然后单击绘制配置文件时,我的函数会请求数据,在关联的栅格/图层时与该线相交,并向前端返回一个图形。
这种方法的问题在于,每次用户单击“draw-profile”时,都会再次发出请求,这需要一些时间。
发出请求后,数据将存储在
DTM object
属性中的 self.raster
(我创建的类)中。
请求数据的函数的简化版本如下所示。
def get_dtm_from_wcs100(
self,
raster_source: str = "YY",
layer: str = "XX",
format: str = "image/tiff",
version: str = "1.0.0",
resx: int = 1,
resy: int = 1,
) -> None:
"""
Get raster and metadata from a WCS service
Parameters
----------
raster_source : str, optional
URL of WCS service. The default is "YY" which is the company geoserver
layer : str, optional
CoverageID. The default is 'XX'.
format : str, optional
File type of the request. The default is 'image/tiff'.
version : str, optional
Version of the WCS protocol. The default is "1.0.0".
resx : int, optional
Pixel resolution in x-coordinate. The default is 1.
resy : int, optional
Pixel resolution in y-coordinate. The default is 1.
Returns
-------
None.
"""
try:
# Connect to WCS and try getting a coverage
wcs = WebCoverageService(raster_source, version=version)
response = wcs.getCoverage(
identifier=layer,
bbox=self.bbox,
crs=self.epsg,
format=format,
resx=resx,
resy=resy,
)
except Exception as e:
raise Exception("An unexpected error has ocurred:", e)
else:
self._read_response(response)
self._set_masked_raster()
当
self._read_response(response)
运行时,self.raster
(numpy array
) 属性被填充。
你知道我可以做什么才能以某种方式存储此响应,而不必每次我想绘制个人资料时都调用它吗?