# Faszination Nächtlicher Vogelzug A web component for visualizing migratory bird detections on an interactive map. Built with React, MapLibre GL, and the BirdWeather GraphQL API. Designed for embedding into CMS platforms like Contao. ## Tech Stack - **React 19** + **TypeScript** (Vite) - **MapLibre GL** -- WebGL map rendering (Stadia Maps dark theme) - **Supercluster** -- per-species spatial clustering - **Apollo Client 4** -- GraphQL data fetching with caching - **GraphQL Code Generation** -- type-safe queries from BirdWeather schema - **SunCalc** -- astronomical day/night calculations - **Tailwind CSS 4** + **Ant Design 6** -- UI - **Vitest** -- testing ## Features - **Interactive map** with color-coded detection clusters per species - **Timeline animation** with autoplay, step controls, and throttled slider - **Night-only mode** that compresses inactive daytime hours using SunCalc sunrise/sunset calculations - **Day/night overlay** showing the terminator (day/night boundary) as a real-time GeoJSON polygon - **Species search** with autocomplete and availability checking per map viewport - **Supplementary layers** (light pollution, noise mapping via WMS) - **Web component** (`<zug-birdnet>`) for CMS embedding without routing ## Project Structure ``` src/ main.tsx Web component registration App.tsx Root component, species selection state api/ fragments.ts GraphQL fragments (DetectionItem, SpeciesItem) queries.ts GraphQL queries (detections, species, search) useDetections.ts Detection fetch hook with prefetching components/ DatesProvider.tsx Time state context (date range, animation, night mode) MapProvider.tsx MapLibre GL instance context SpeciesDropdown.tsx Species selection with search autocomplete Timeline.tsx Date picker, animation slider, playback controls LayersDropdown.tsx Toggle info layers (light pollution, noise) InfoPopup.tsx Map info marker popups map/ Map.tsx MapLibre GL initialization and rendering clusterUtils.ts Per-species Supercluster index creation colorUtils.ts MapLibre paint expression builder mapStyles.ts Map layer definitions usePersistentColors.ts Stable color assignment per species infopoints.ts Static info marker data lib/ apollo-client.ts Apollo Client with cache type policies buildAvailableSpeciesQuery.ts Dynamic aliased query generation getDayPolygon.ts Day/night terminator polygon calculation getTranslatedSpeciesName.ts i18n species name lookup isNotNull.ts, hasNonNullProp.ts Type guard utilities throttle.ts Throttle utility gql/ Auto-generated GraphQL types (do not edit) ``` ## Architecture Three React context providers compose the application: ``` ApolloProvider GraphQL caching and data fetching DatesProvider Date range, animation state, night-only time segments MapProvider MapLibre GL map instance App Species selection, filtered detections, color mapping ``` **Data flow:** Apollo fetches detections for the current bounding box and date range. Detections are filtered client-side by the visualisation time window (controlled by the timeline slider). Each species gets its own Supercluster index for independent color-coded clustering. Cluster features are rendered via MapLibre GL layers with dynamic `match` paint expressions. **GraphQL:** Queries and fragments are defined in `src/api/` and typed via `@graphql-codegen/client-preset`. Run `npm run codegen` after schema changes to regenerate `src/gql/`. ## Development ```sh npm install npm run dev ``` The dev server uses a self-signed SSL certificate via `@vitejs/plugin-basic-ssl`. Accept the browser warning on first visit. Other commands: ```sh npm run build # Production build npm run test # Run tests npm run lint # ESLint npm run codegen # Regenerate GraphQL types ``` ## Build & Integration Run `npm run build` to produce the `dist/` folder. The build outputs stable filenames (no hashes) and splits vendor dependencies into separate chunks for caching: ``` dist/ index.html assets/ index.css App styles (Tailwind + Ant Design) index.js Application code, React, Supercluster, dayjs, SunCalc maplibre.js MapLibre GL antd.js Ant Design + icons apollo.js Apollo Client + graphql ``` Only `index.js` changes on application updates. Vendor chunks are cache-stable between deploys. To embed the web component, include the built CSS and JS, then use the custom element: ```html <link rel="stylesheet" href="/assets/index.css"> <script type="module" src="/assets/index.js"></script> <zug-birdnet></zug-birdnet> ``` No routing. The component is self-contained and can be placed anywhere on the page. Third-party CMS integration (e.g., Contao) only needs to include the built assets and the custom element tag. ## Configuration App-level settings are in `src/config.ts`: | Option | Default | Description | |---|---|---| | `SHOW_DEMO_INFOPOINTS` | `false` | Show static info markers on the map (demo/development only) |
This dataset contains airborne radar data acquired using the AWI EMR system (Nixdorf et al., 1999) during the Arctic season of 2015. The profiles extend western DML over the Maud Belt and Ekström Ice Shelf to investigate the geodynamic evolution of East Antarctica, the Forster magnetic anomaly (GEA-V-FMA). The data are available as netCDF files (including waveforms and metadata), KML files of the profile line locations, and quicklook images of the radargrams.
This dataset contains airborne radar data acquired using the AWI Accumulation Radar (ACCU) system during the Antarctic season of 2011/12. The profiles cover western Dronning Maud Land around EDML, eastern Dronning Maud Land over the Sør Rondane Mountains, and over Atka Bay. The data are available as netCDF files (including waveforms and metadata), KML files of the profile line locations, and quicklook images of the radargrams.
DWD’s fully automatic MOSMIX product optimizes and interprets the forecast calculations of the NWP models ICON (DWD) and IFS (ECMWF), combines these and calculates statistically optimized weather forecasts in terms of point forecasts (PFCs). Thus, statistically corrected, updated forecasts for the next ten days are calculated for about 5400 locations around the world. Most forecasting locations are spread over Germany and Europe. MOSMIX forecasts (PFCs) include nearly all common meteorological parameters measured by weather stations. For further information please refer to: [in German: https://www.dwd.de/DE/leistungen/met_verfahren_mosmix/met_verfahren_mosmix.html ] [in English: https://www.dwd.de/EN/ourservices/met_application_mosmix/met_application_mosmix.html ]
Im Kalmusoel wurde ein Bestandteil entdeckt (cis-beta-Asaron), der in indischem und japanischem Oel etwa zwei Drittel aller Inhaltsstoffe ausmacht und der sich als Sterilans fuer eine Reihe von Insekten erwies. Es soll nun geprueft werden, ob es moeglich ist, ihn ueber die Arbeiterinnen der Ameisen in der Koenigin anzureichern und sie auf diese Weise zu sterilisieren. Die Erarbeitung solcher umweltfreundlicher Bekaempfungsmethoden ist fuer die Dezimierung schaedlicher, unsozialer Insekten in Haus und Garten von besonderem Interesse.
In den Eichenwaeldern Unterfrankens kommt es in regelmaessigen Abstaenden zu Massenvermehrungen des gruenen Eichenwicklers. Der Einfluss von Waldameisen und Raubparasiten auf den Massenwechsel dieser und verwandter Arten wird im Freiland analysiert (Abundanzanalysen, Kontrollen des Nahrungseintrags der Waldameisen, Aufzuchten der Wirte und Parasiten, etc.). Der Nahrungserwerb der Waldameisen und seine Regulation werden auch in Laborexperimenten analysiert. Es ist unter anderem auch ein Ziel der Untersuchungen, grundsaetzliche Vorstellungen ueber den Einfluss einerseits der Waldameisen, andererseits der Raubparasiten, auf den Massenwechsel eines gradierenden Insekts zu gewinnen.
Nahrungserwerb der Waldameisen in einem Eichenwald im Tages- und Jahresverlauf, Jahresbilanz (Menge, Zusammensetzung, Energiegehalt der Nahrung). Beeinflussung des Nahrungserwerbs durch Umweltfaktoren (Witterung, Nahrungsangebot). Regulation des Nahrungserwerbs durch die Waldameisen selbst. Einfluss der Waldameisen auf den Massenwechsel eines Schadinsekts (Eichenwickler Tortrix viridana L.).
Entwicklung von Richtlinien zur Mittelpruefung an bestimmten Nutzarthropoden. Hier: Waldameisen (Formica polyctena) und Tachinen (Pales pavida). Spezielle Beruecksichtigung der Beeintraechtigung der Nutzfunktion der Versuchstiere (z.B. der Parasitierungsleistung u.a.). Durchfuehrung von Tests unter praxisueblichen Bedingungen, wobei nicht so sehr Insektizide, sondern Herbizide und Fungizide im Vordergrund stehen.
| Organisation | Count |
|---|---|
| Bund | 224 |
| Europa | 3 |
| Kommune | 1 |
| Land | 75 |
| Weitere | 60 |
| Wissenschaft | 128 |
| Type | Count |
|---|---|
| Daten und Messstellen | 17 |
| Ereignis | 3 |
| Förderprogramm | 114 |
| Lehrmaterial | 1 |
| Software | 1 |
| Taxon | 56 |
| Text | 85 |
| Umweltprüfung | 1 |
| unbekannt | 63 |
| License | Count |
|---|---|
| Geschlossen | 171 |
| Offen | 166 |
| Unbekannt | 4 |
| Language | Count |
|---|---|
| Deutsch | 300 |
| Englisch | 108 |
| Resource type | Count |
|---|---|
| Archiv | 5 |
| Bild | 11 |
| Datei | 39 |
| Dokument | 131 |
| Keine | 133 |
| Webdienst | 3 |
| Webseite | 71 |
| Topic | Count |
|---|---|
| Boden | 190 |
| Lebewesen und Lebensräume | 341 |
| Luft | 133 |
| Mensch und Umwelt | 309 |
| Wasser | 156 |
| Weitere | 271 |