Использование исходных текстов Openlayers GeoTIFF в приложении django

У меня есть приложение django со страницей, которая отображает OSM через Openlayers, я динамически добавляю к нему некоторые маркеры, и теперь я также хочу отображать растровые наложения из файлов .tif.

Я изо всех сил пытаюсь реализовать Openlayers GeoTIFF. Это мой текущий тестовый шаблон, в котором я просто пытаюсь отобразить любой tif-файл. Я использую локальную копию кода openlayers здесь:

{% load static %}    
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Title</title>       

    <link rel="stylesheet" href="{% static '/css/ol.css' %}">
    <script src="{% static '/js/ol.js' %}"></script>
    <script type="module" src="{% static '/ol/source/GeoTIFF.js' %}"></script>
    <script src="{% static '/js/proj4.js' %}"></script>
    
</head>
<body id="body">   
    <div id="map" style="width: 1000px; height: 500px;"></div>
</body>

<script type="module">        
  const source = new GeoTIFF({
    sources: [
      {
        url: 'https://sentinel-cogs.s3.us-west-2.amazonaws.com/sentinel-s2-l2a-cogs/36/Q/WD/2020/7/S2A_36QWD_20200701_0_L2A/TCI.tif',
      },
    ],
  });

  const layer = new TileLayer({ source });

  const map = new Map({
    target: 'map',
    layers: [layer],
    view: new View({
      center: [0, 0],
      zoom: 12,
    }),
  });
</script>
</html>
деленья деленья

Это не работает, потому что GeoTIFF.js пытается выполнить импорт из 'geotiff', который он не может найти. Я знаю, что мне, вероятно, придется пройти установку npm и каким-то образом связать зависимости, чтобы использовать GeoTIFF в таком шаблоне, как этот, но я новичок и, похоже, не могу осознать это. Я попытался создать пакет с помощью vite, но не смог заставить его работать.

Это мой исходный файл geotiff-entry.js:

import GeoTIFF from 'ol/source/GeoTIFF.js';
export default GeoTIFF;

А это vite.config.js

import { defineConfig } from 'vite';
import { resolve } from 'path';

export default defineConfig({
  build: {
    lib: {
      entry: resolve(__dirname, 'src/geotiff-entry.js'),
      name: 'GeoTIFF',
      fileName: () => 'geotiff-bundle.js', // 👈 Force .js output
      formats: ['es'],
    },
    rollupOptions: {
      output: {
        inlineDynamicImports: true,
      },
    },
  },
});

Используя сгенерированный geotiff-bundle.js и импортируя в шаблон следующим образом:

import Map from 'https://cdn.jsdelivr.net/npm/ol@v10.6.0/Map.js';
import View from 'https://cdn.jsdelivr.net/npm/ol@v10.6.0/View.js';
import TileLayer from 'https://cdn.jsdelivr.net/npm/ol@v10.6.0/layer/WebGLTile.js';
import GeoTIFF from '{% static "js/geotiff-bundle.js" %}';

приводит к ошибке спецификатора в BaseVector.js при попытке 'импортировать RBush из 'rbush". Я не могу продвинуться дальше этого

Итак, если у кого-нибудь есть какие-либо советы о том, как реализовать GeoTIFF с помощью приложения django, это действительно помогло бы мне.

Вернуться на верх