Files
geo/api/scripts/fix_geometry_for_spatial_index.sql
Pierre 0687900564 fix: Récupérer l'opération active depuis la table operations
- Corrige l'erreur SQL 'Unknown column fk_operation in users'
- L'opération active est récupérée depuis operations.chk_active = 1
- Jointure avec users pour filtrer par entité de l'admin créateur
- Query: SELECT o.id FROM operations o INNER JOIN users u ON u.fk_entite = o.fk_entite WHERE u.id = ? AND o.chk_active = 1
2026-01-26 16:57:08 +01:00

37 lines
1.5 KiB
SQL
Executable File

-- Script pour diagnostiquer et corriger les problèmes d'index spatial
-- 1. Vérifier s'il y a des géométries vides
SELECT 'Géométries vides:' as diagnostic;
SELECT code, libelle
FROM x_departements
WHERE contour IS NOT NULL AND ST_IsEmpty(contour) = 1;
-- 2. Essayer de créer un index spatial sur une copie de la table pour tester
CREATE TABLE x_departements_test LIKE x_departements;
-- 3. Copier uniquement les départements métropolitains avec contours
INSERT INTO x_departements_test
SELECT * FROM x_departements
WHERE contour IS NOT NULL
AND code NOT IN ('20', '971', '972', '973', '974', '975', '976');
-- 4. Tenter de créer l'index spatial sur la table de test
ALTER TABLE x_departements_test ADD SPATIAL INDEX idx_contour_test (contour);
-- Si ça fonctionne, le problème vient des départements spécifiques
-- Si ça ne fonctionne pas, il y a un problème avec les données géométriques
-- 5. Alternative : recréer les géométries à partir du texte WKT
-- Cela peut corriger certains problèmes de format
UPDATE x_departements d
INNER JOIN x_departements_contours dc ON d.code = dc.code_dept
SET d.contour = ST_GeomFromText(ST_AsText(dc.contour))
WHERE dc.contour IS NOT NULL
AND d.code IN (SELECT code FROM x_departements WHERE contour IS NOT NULL LIMIT 1);
-- 6. Nettoyer
DROP TABLE IF EXISTS x_departements_test;
-- Note : Pour l'instant, l'index normal créé avec contour(32) permettra
-- le fonctionnement de l'API, même si les performances seront moindres
-- qu'avec un vrai index spatial.