Провайдер геосервера Terrain отображает шипы и вырезанное изображение
Я играю с cesiumjs и GeoServer. Я следовал ридми из этого репозитория GitHub — kaktus40/Cesium-GeoserverTerrainProvider: плагин для использования GeoServer в качестве поставщика ландшафта и возможности обслуживать данные из GeoServer в цезий, единственная проблема, с которой я сталкиваюсь, — это края шипов на изображении и черные промежутки между ними. плитка.
Вы можете увидеть на этом изображении https://ibb.co/yR9Jpr9
Я использовал этот сайт https://srtm.csi.cgiar.org/ для загрузки данных SRTM.
Я сделал из него пирамиду с помощью gdal_relite.py и загрузил с помощью плагина imagePyramid.
И я добавил плагин bil для GeoServer и сделал кодировку по умолчанию application/bil16.
Пример кода, который я использую
const terrainProvider = new Cesium.GeoserverTerrainProvider({
service: ‘WMS’,
url: ‘http://localhost:8080/geoserver/elevation/wms’,
layerName: ‘newp’,
xml: ‘http://localhost:8080/geoserver/elevation/wms?SERVICE=WMS&REQUEST=GetCapabilities&tiled=true’,
heightMapWidth: 64,
heightMapHeight: 64,
offset: 0,
highest: 12000,
lowest: -500,
hasStyledImage: false,
waterMask: false,
maxLevel: 11,
formatImage: { format: ‘image/png’, extension: ‘png’ },
formatArray: {
format: ‘image/bil’,
postProcessArray: function (bufferIn, size, highest, lowest, offset) {
var resultat;
var viewerIn = new DataView(bufferIn);
var littleEndianBuffer = new ArrayBuffer(size.height * size.width * 2);
var viewerOut = new DataView(littleEndianBuffer);
if (littleEndianBuffer.byteLength === bufferIn.byteLength) {
// time to switch bytes!!
var temp,
goodCell = 0,
somme = 0;
for (var i = 0; i < littleEndianBuffer.byteLength; i += 2) {
temp = viewerIn.getInt16(i, false) - offset;
if (temp > lowest && temp < highest) {
viewerOut.setInt16(i, temp, true);
somme += temp;
goodCell++;
} else {
var val = goodCell === 0 ? 1 : somme / goodCell;
viewerOut.setInt16(i, val, true);
}
}
resultat = new Int16Array(littleEndianBuffer);
}
return resultat;
},
},
});
Кто-нибудь знает, как я могу решить эту проблему?