Suite

ESRI Shapefile ne se charge pas dans SQL Server


J'ai chargé un certain nombre de fichiers de formes dans SQL Server 2012 à l'aide de ogr2ogr.exe et du pilote MSSQLSpatial. Jusqu'à présent, j'ai très bien réussi à le faire.

Cependant, j'ai maintenant rencontré des difficultés avec certains fichiers et les erreurs générées par divers outils ne sont pas très utiles pour identifier exactement ce qui ne va pas avec le fichier de formes.

Les fichiers en question font entre 270 Mo et 290 Mo et la plupart ont une seule couche avec plus de 80 000 fonctionnalités dans cette couche. Cependant, la taille et le nombre de fonctionnalités ne sont pas en soi un problème, je crois, car un fichier faisant partie de cet ensemble de données mesure 280 Mo et contient 111 000 fonctionnalités (ish) dans sa couche particulière.

Les fichiers à problème se chargent tous correctement et sont visibles dans QGIS, y compris tous les fichiers/fonctionnalités rejetés par ogr2ogr.exe comme causant un problème. Ils se chargent également avec succès dans MapInfo et peuvent y être modifiés très bien. La réexportation de la couche de QGIS en tant que fichier de formes ne résout pas le problème de chargement via ogr2ogr.exe

J'ai également essayé de le charger à l'aide de Shape2SQL et ce programme se bloque simplement après avoir atteint un certain point sans aucun message d'erreur.

Le message spécifique envoyé par ogr2ogr.exe est :

ERREUR 1 : la commande INSERT pour la nouvelle fonctionnalité a échoué. [Microsoft][Pilote ODBC SQL Server][DBNETLIB]ConnectionWrite (send()).

ERREUR 1 : Impossible d'écrire l'entité < entité no > à partir de la couche < nom de la couche >.

ERREUR 1 : interruption prématurée de la traduction après l'échec de la traduction de la couche < nom de la couche > (utilisez -skipfailures pour ignorer les erreurs)

L'instruction de ligne de commande pour ogr2ogr.exe que j'utilise est :

ogr2ogr.exe -overwrite -f MSSQLSpatial "MSSQL:server=… ;database=… ;trusted_connection=yes" "< nom de fichier >.shp" -t_srs "EPSG:4326" -lco "GEOM_TYPE=geography" -lco "SCHEMA=ETL " -lco "OVERWRITE=YES" -progress

Les shapefiles sont en projection WGS84.

Est-ce que quelqu'un sait quel outil je pourrais utiliser à partir de la boîte à outils GDAL, QGIS ou MapInfo pour corriger les erreurs dans ces fichiers de formes afin qu'ils puissent être chargés par ogr2ogr.exe dans SQL Server 2012 ? Ou bien s'agit-il de mes arguments ogr2ogr.exe ?

Mettre à jour:

J'ai réussi à exécuter le plugin Vertices Counter et la première fonctionnalité qui cause un problème a 5 558 760 sommets.


Cela a fonctionné pour moi dans le shell ogr.

Changez d'abord votre répertoire dans le dossier qui contient votre fichier de formes (chemin complet du cd vers le dossier du fichier de formes)

ogr2ogr -overwrite -f "MSSQLSpatial" "MSSQL:server=… ;database=… ;trusted_connection=yes" test.shp -a_srs "EPSG:4326" -nln "test"

J'ai finalement renoncé à essayer de charger les gros fichiers - cela ne semble pas possible avec aucun outil. Le revers de la médaille était que les fonctionnalités que j'ai réussi à charger ont pris plus d'une heure pour faire un simpleSTIntersectsmettre en doute.

Solution:

J'ai découpé les gros fichiers de formes en utilisantogr2ogrsur la base des géométries de comté, puis les a téléchargées et associées aux données de comté afin de créer un ensemble plus petit d'objets géographiques à interroger.

Cette méthode a fonctionné comme un charme etSTintersecteles performances des requêtes pour le fichier de formes le plus complexe sont toujours de l'ordre de 600 ms, ce qui est acceptable pour nos besoins.


J'ai résolu avec la commande : -FieldTypeToString All

Le problème dans mon cas était une colonne avec un problème de conversion numérique. J'ai donc tourné toutes les colonnes (sauf pour la géographie, bien sûr), et ça s'est résolu.


J'avais le même problème, le moyen le plus rapide était d'utiliser cet outil.

http://www.dknezevic.com/blog/2014/10/import-shapefiles-into-sql-server.html

C'est rapide et facile à travailler.


J'ai trouvé que j'avais cette erreur avec une carte des régions administratives du monde.

La solution qui a fonctionné pour moi était de passer de QGIS 2.18 (GDAL version 2.1.1) à GGIS 2.12 (GDAL version 1.11.3). Ensuite, cela a bien fonctionné.


Voir la vidéo: GDAL Tutorial 278: Import shapefile in sql server (Octobre 2021).