Suite

Comment puis-je obtenir OpenLayers pour définir la vue par défaut dans EPSG: 27700


Avis de non-responsabilité, je suis assez nouveau sur OpenLayers, mais je ne suis pas nouveau sur JavaScript et/ou la programmation Web :-)

Synopsis

J'ai une page html basée sur des couches ouvertes, que j'essaie d'utiliser pour rendre une carte WMS servie à l'aide de MapServer.

La couche WMS est la carte raster de l'enquête à l'échelle du Royaume-Uni à 250k, composée de 56 tuiles tiff, une pour chacun des principaux carrés de la grille du Royaume-Uni (par exemple : nz.tif, nu.tif, etc.)

MapServer projette la carte à partir d'un fichier de formes d'index de tuiles à l'aide d'EPSG:27700, cela fonctionne parfaitement dans QGIS lorsque je la charge en tant que couche WMS, et toute géométrie que je crée est créée et localisée correctement même lorsqu'elle est enregistrée à l'aide d'un SRS différent.

Cependant, lorsque j'essaie de rendre la même couche WMS à l'aide d'OpenLayers, les résultats sont radicalement différents.

Peu importe ce que j'essaie de faire dans mon constructeur OpenLayers, j'obtiens en permanence l'image suivante :

J'ai compris qu'il s'agit du coin inférieur gauche de la carte du système d'exploitation (Origine 0,0 en bas de la côte des îles Scilly où commence le système de coordonnées EPSG: 27700)

Si je regarde l'URL qu'OpenLayers envoie à MapServer à l'aide de fiddler, c'est ce que je vois.

Comme vous pouvez le voir, la zone de délimitation est toujours définie sur

BBOX = 0,-90,180,90

Pour moi, cela semble très faux, d'autant plus que vous pouvez voir dans l'image qu'OpenLayers dit à MapServer qu'il s'exécute en utilisant EPSG: 27700

Le fichier de carte utilisé par MapServer pour produire la carte est le suivant

NOM DE LA CARTE "os250k" UNITÉS dd TAILLE 640 480 IMAGECOLOR 255 255 255 TYPE D'IMAGE png SHAPEPATH "H:mapserver.digital-solutions.localgeodata" EXTENT 0 0 700000 1300000 PROJECTION "init=epsg:27700" END WEB METADATA " ows_title" "Ordnance Survey 250k Mini Scale Map of the UK" "ows_onlineresource" "http://mapserver/cgi-bin/mapserv.exe?map=mapapps/os250k.map" "wms_version" "1.1.1" "wms_srs" "EPSG:27700" "wfs_version" "1.0.0" "wfs_srs" "EPSG:27700" "wms_enable_request" "*" "ows_enable_request" "*" END END LAYER NAME "tiles" STATUT sur TILEINDEX "os250.shp" TILEITEM " Emplacement" TYPE RASTER PROJECTION "init=epsg:27700" END METADATA "ows_title" "Ordnance Survey Tiles for 250k Miniscale" END END END

Le code HTML que j'utilise pour rendre la carte est le suivant

       

UK Ordnance Survey 250k Mini Échelle

Pourtant, peu importe ce que je fais, tout ce que je semble obtenir, c'est ce coin inférieur de la carte entière.

Ce que j'ai essayé jusqu'à présent

Manuellement, j'ai utilisé fiddler pour récupérer la demande et l'URL vers MapServer, et j'ai défini manuellement le cadre de délimitation dans la barre d'adresse du navigateur sur 0,0,320000,320000. Cela a produit une image qui couvrait les îles Scilly et presque toutes les Cornouailles.

Ce résultat de la manipulation manuelle de la BBOX sur l'URL me suggère qu'OpenLayers envoie effectivement des coordonnées BBOX incorrectes, ou que je ne fais pas ce que je devrais faire.

Comme vous pouvez (ou devriez pouvoir) le voir à partir de mon code HTML, j'ai essayé différentes valeurs pour centrer la carte, en spécifiant le cadre de délimitation, j'ai ajouté des lignes, des lignes commentées sur des extraits de code utilisés à partir d'autres réponses ici sur SIG-SE.

J'ai essayé de spécifier les coordonnées dans la projection cartographique de EPSG:27700, j'ai essayé de définir les différentes coordonnées à l'aide de EPSG:4326, j'ai essayé de les définir comme 4326 et de les transformer en 27700 et vice versa, chacun time OpenLayers semble simplement ignorer ce que je lui demande et continue d'envoyer le même ensemble de paramètres (comme on le voit dans l'image du violon ci-dessus) à MapServer.

Ce que j'essaie de faire faire à OpenLayers

Zoomez sur un emplacement de départ sur ma couche WMS, cet emplacement a une zone de délimitation comme suit dans EPSG:27700

xMin,yMin = 407375,548966 xMax,yMax = 414004,552315

Le centre est quelque part autour

409447,550814

J'ai projeté la carte des couches ouvertes en utilisant EPSG:27700, le WMS sert en utilisant EPSG:27700 donc je ne peux pas comprendre pourquoi il ne produit pas l'image attendue (qui devrait être centrée autour de la ville de Consett dans Comté de Durham au Royaume-Uni.

Je ne veux pas qu'OpenLayers démarre, charge toute la carte car il s'agit d'une énorme carte couvrant l'ensemble du Royaume-Uni qui prend environ 25 à 30 secondes à télécharger sur un réseau local, je vise à ce que cela soit rendu sur une tablette éventuellement , la taille de la carte et la quantité de données téléchargées sont donc très importantes.

Pour référence, il s'agit exactement de la même couche WMS, chargée dans QGIS à l'aide d'un projet défini sur EPSG:27700 et avec les limites et le centre définis comme indiqué ci-dessus

Je suis presque sûr que ce n'est pas le fichier map qui est à blâmer, mais s'il existe un moyen de fournir un point de départ par défaut à l'aide du script map, plutôt que dans OpenLayers, ce serait également une solution acceptable.


Et comme toujours, cela arrive de manière prévisible…

Environ une heure après avoir posté la question, je finis par y répondre et trouver une solution.

Il s'avère que tout ce que j'avais besoin d'ajouter à mon constructeur était ce qui suit

map.maxExtent = new OpenLayers.Bounds(0,0,700000,1300000);

Ceci a été ajouté juste après avoir défini la projection cartographique comme suit

function init() { map = new OpenLayers.Map('map'); map.projection = new OpenLayers.Projection("EPSG:27700"); map.maxExtent = new OpenLayers.Bounds(0,0,700000,1300000); // <<----- layer = new OpenLayers.Layer.WMS("UK Counties", "http://mapserver/cgi-bin/mapserv.exe?map=mapapps/os250k.map", { layer: 'tuiles', format : 'image/png', srs : 'EPSG:27700' });

Parmi tous les différents messages et questions que j'ai lus, aucun d'entre eux n'a explicitement mentionné ce paramètre, mais c'est en fait cette question GIS-SE existante qui m'a orienté dans la bonne direction.

La couche GeoServer WMS ne fonctionne pas dans OpenLayers

Mes manipulations avec les couches ouvertes m'avaient amené à un point où j'avais des carreaux roses comme on le voit dans le message, et le serveur de cartes se plaignait d'un SRS incorrect (je pouvais voir la réponse dans Fiddler). J'essayais de résoudre le problème SRS, quand J'ai remarqué l'appel des étendues définies.

En voyant l'appel d'étendue, j'ai annulé le code qui m'avait procuré les tuiles roses, puis j'ai modifié mon code d'origine pour inclure l'appel d'étendue que je venais de remarquer en veillant à définir correctement les étendues pour ma propre carte, et bingo…

Lorsque j'ai actualisé la carte, tout a fonctionné comme prévu.


Openlayers 3 view setProperties ne remplit pas la carte

J'essaie de définir dynamiquement les propriétés de ma carte mais cela ne fonctionne pas.

J'essaie de définir le niveau de zoom min max comme ceci:

Ce code ne définit pas la vue.

J'obtiens des propriétés de vue de carte, map.getView().getProperties() mais il renvoie uniquement :

Je suis les paramètres étendue, zoom, minZoom, maxZoom mais n'apparaît pas.

(en fait, vous ne pouvez pas définir le projet, l'étendue, le zoom min, max et les résolutions après la création de la carte)


NOTE DE L'AUTEUR DE LA QUESTION : Cette solution fonctionne pour les vues non OpenLayers. Cependant, il ne parvient pas à construire le wrapper lorsque la vue est un OpenLayers.

La question reste donc sans réponse.

  • Vous devez créer un wrapper div où vous êtes censé afficher le contenu de la vue ajaxifiée. Vous devez ajouter le wrapper div dans le fichier modèle (MYTEMPLATE.tpl.php)
  • Créez un module qui enregistrera le lien ajax dans hook_menu(). Dans le rappel de l'élément de menu, vous devez rendre le contenu de la vue à l'aide de ajax_commands.

J'ai dû le faire sur un site Drupal 6. Le problème est que les paramètres de la vue sont affichés dans l'en-tête en tant que javascript en ligne, vous ne pouvez donc pas simplement charger le div contenant la vue et vous attendre à ce qu'il fonctionne.

Ce que je devais faire était d'utiliser un appel ajax pour obtenir la page qui a la vue OL, saisir le div de celui contenant la vue html, puis saisir le js en ligne de l'en-tête de la page, et exécuter ce javascript, puis exécuter le Fonction javascript OL qui initialise la vue.

Bref c'est un énorme PIA.

Il y a quelques exemples de ce travail sur les pages individuelles de la communauté ici

..bien que pour la vie de moi, je ne me souviens pas lequel.

Voici l'extrait de code js qui fait cela de toute façon, vous devriez être capable de comprendre ce qui se passe, mais comme je l'ai dit, ce n'est pas une excellente solution et cela vaut la peine de regarder autre chose que le module OpenLayers imo.


Comment corriger les erreurs Openlayers &ldquoImpossible de charger CTools exportable&rdquo

Ainsi, Openlayers 3.1 et 3.x Dev ont tous deux ce problème. J'ai regardé et ce problème a été signalé comme résolu dans la liste des problèmes de Drupal Openlayers.

Le problème est que chacun de mes calques, composants et sources ajoutés déclenche chacun ces erreurs :

La plupart de ces composants fonctionnent dans ma carte, à l'exception de la fenêtre contextuelle, mais c'est un problème différent. Une partie du problème est que cette erreur est affichée en évidence sur ma page de carte, même pour les utilisateurs réguliers. Ce qui m'embrouille, c'est que pour chacun de ces composants, je suis les exemples OL, donc je ne sais pas pourquoi mes implémentations personnalisées ne fonctionnent pas. Je suppose que cela pourrait être dû au fait que les exemples openlayers sont tous définis dans le code du module, tandis que mes implémentations personnalisées sont enregistrées dans la base de données et qu'il peut y avoir un problème dans la façon dont elles y sont écrites. Il y avait un problème dans le 2.x que certains des paramètres de composants de style étaient mal écrits dans la base de données, mais je n'ai pas pu trouver où dans la base de données ils sont écrits. D'après ce que je peux dire, lorsque j'exporte mes composants personnalisés, ils correspondent à ceux des exemples, donc je ne suis pas sûr de ce qui se passe.

Donc, ma question, qui n'est pas évidente dans la file d'attente des problèmes, est la suivante : puis-je faire quelque chose pour résoudre ce problème (correctif, etc.) ?


Quelqu'un a-t-il de l'expérience avec Drupal et Openlayers ?

Je veux me lancer dans le développement de SIG Web et je pense qu'OpenLayers est la voie à suivre. J'essaie autant que possible d'apprendre par moi-même, mais j'ai l'impression de me heurter constamment à un mur en matière de développement Web. Je sais programmer, mais pas quand il s'agit de développement Web. Chaque fois que j'essaie de le comprendre, je suis complètement dépassé par ce framework et ce framework, pour me rendre compte que "le framework garblegorb est totalement obsolète, utilisez plutôt spliggitysploop!" toujours à la merci d'un problème inconnu que je ne peux même pas décrire, et après un certain temps, je ne me souviens même plus du problème que j'avais à l'origine.

J'ai découvert Drupal et apparemment il a des modules pour OpenLayers. J'ai regardé quelques tutoriels d'introduction et cela semble pouvoir simplifier beaucoup le processus de développement et me permettrait de faire du SIG Web avec via son module OpenLayers. Quelqu'un a-t-il une expérience avec OpenLayers et Drupal utilisés ? Pouvez-vous commenter son utilité et/ou sa facilité d'utilisation par rapport à sa programmation directe ? Et si c'était considéré comme une bonne compétence employable ? Je demande parce que je ne veux pas perdre mon temps à parcourir toute la série s'il s'avère que cela ne vaut pas vraiment la peine à long terme.


Exemples

Exemple 1 : répertorie les fonctionnalités facultatives du système d'exploitation en cours d'exécution

Cette commande répertorie toutes les fonctionnalités facultatives du système d'exploitation Windows en cours d'exécution.

Exemple 2 : répertorie les fonctionnalités facultatives d'un package dans une image montée

Cette commande affiche la liste de toutes les fonctionnalités facultatives du package spécifié dans l'image Windows montée sur c:offline.

Exemple 3 : obtenir des détails sur une fonctionnalité dans une image montée

Cette commande affiche des informations détaillées sur la fonctionnalité Hearts dans le package Windows Foundation dans l'image Windows montée sur c:offline.

Exemple 4 : Obtient des détails sur une fonctionnalité dans un package spécifié dans une image montée

Cette commande affiche des informations détaillées sur la fonctionnalité, MyFeature, dans le package à l'emplacement c:packagepackage.cab dans l'image Windows montée sur c:offline.

Exemple 5 : Obtient des détails sur les fonctionnalités à l'aide d'un caractère générique

Cette commande renvoie des détails sur les fonctionnalités facultatives Hyper-V dans le système d'exploitation en cours d'exécution à l'aide d'un nom de fonctionnalité générique.


Paramètres

Obtient l'emplacement actuel dans le lecteur PowerShell spécifié.

Par exemple, si vous êtes dans le lecteur Cert:, vous pouvez utiliser ce paramètre pour trouver votre emplacement actuel dans le lecteur C:.

Taper:Chaîne de caractères [ ]
Position:Nommé
Valeur par défaut:Rien
Accepter l'entrée du pipeline :Vrai
Accepter les caractères génériques :Faux

Obtient l'emplacement actuel dans le lecteur pris en charge par le fournisseur PowerShell spécifié. Si le fournisseur spécifié prend en charge plusieurs lecteurs, cette applet de commande renvoie l'emplacement sur le lecteur le plus récemment consulté.

Par exemple, si vous êtes dans le lecteur C:, vous pouvez utiliser ce paramètre pour trouver votre emplacement actuel dans les lecteurs du PowerShell Enregistrement fournisseur.

Taper:Chaîne de caractères [ ]
Position:Nommé
Valeur par défaut:Rien
Accepter l'entrée du pipeline :Vrai
Accepter les caractères génériques :Faux

Indique que cette applet de commande affiche les emplacements ajoutés à la pile d'emplacements actuelle. Vous pouvez ajouter des emplacements aux piles à l'aide de l'applet de commande Push-Location.

Pour afficher les emplacements dans une pile d'emplacements différente, utilisez le Nom de la pile paramètre. Pour plus d'informations sur les piles d'emplacements, consultez les Notes.

Taper:SwitchParameter
Position:Nommé
Valeur par défaut:Rien
Accepter l'entrée du pipeline :Faux
Accepter les caractères génériques :Faux

Spécifie, sous la forme d'un tableau de chaînes, les emplacements nommés empilés. Entrez un ou plusieurs noms de pile d'emplacements.

Pour afficher les emplacements dans la pile d'emplacements actuelle, utilisez le Empiler paramètre. Pour faire d'une pile d'emplacements la pile d'emplacements actuelle, utilisez l'applet de commande Set-Location.

Cette applet de commande ne peut pas afficher les emplacements dans la pile par défaut sans nom, sauf s'il s'agit de la pile actuelle.

Taper:Chaîne de caractères [ ]
Position:Nommé
Valeur par défaut:Rien
Accepter l'entrée du pipeline :Vrai
Accepter les caractères génériques :Faux


Répertorier les transformations par pertinence

Obtenez une liste de transformations appropriées pour projeter une géométrie entre deux références spatiales avec des références horizontales différentes.

Les transformations (parfois appelées datum ou transformations géographiques) sont utilisées lors de la projection de données d'une référence spatiale à une autre lorsqu'il existe une différence dans le datum sous-jacent des références spatiales. Les transformations peuvent être définies mathématiquement par des équations spécifiques (transformations basées sur des équations) ou peuvent s'appuyer sur des fichiers de support externes (transformations basées sur la grille). Choisir la transformation la plus appropriée pour une situation peut assurer la meilleure précision possible pour cette opération. Certains utilisateurs familiarisés avec les transformations peuvent souhaiter contrôler quelle transformation est utilisée dans une opération.

Sélectionnez une transformation dans la liste pour voir le résultat de la projection du point de EPSG:27700 à EPSG:3857 à l'aide de cette transformation. Le résultat est affiché sous la forme d'une croix rouge, vous pouvez comparer visuellement le point bleu d'origine avec la croix rouge projetée.

Sélectionnez « Considérer l'étendue actuelle » pour limiter les transformations appropriées pour l'étendue actuelle.

Si la transformation sélectionnée n'est pas utilisable (a des fichiers de grille manquants), une erreur s'affiche.

  1. Transmettez les références spatiales d'entrée et de sortie à TransformationCatalog.GetTransformationsBySuitability pour les transformations basées sur la référence spatiale de la carte OU fournissez en plus un argument d'étendue pour renvoyer uniquement les transformations adaptées à l'étendue. Cela renvoie une liste de transformations classées.
  2. Utilisez l'un des objets DatumTransformation renvoyés pour projeter la géométrie en entrée sur la référence spatiale en sortie.
  • DatumTransformation
  • Transformation Géographique
  • Étape de la transformation géographique
  • GéométrieMoteur
  • GeometryEngine.Project
  • TransformationCatalogue

Certaines transformations ne sont pas disponibles tant que les données de transformation ne sont pas fournies.

Cet exemple utilise un GeographicTransformation , qui étend la classe DatumTransformation. Depuis la version 100,9, ArcGIS Runtime inclut également une HorizontalVerticalTransformation , qui étend également DatumTransformation . La classe HorizontalVerticalTransformation est utilisée pour transformer les coordonnées des géométries z-aware entre les références spatiales qui ont différents systèmes de coordonnées géographiques et/ou verticales.

Cet exemple peut être utilisé avec ou sans provisionnement des données du moteur de projection sur votre appareil. Si vous ne fournissez pas de données, un nombre limité de transformations sera disponible.

Pour télécharger les données du moteur de projection sur votre appareil :

  1. Connectez-vous au site ArcGIS for Developers à l'aide de votre compte de développeur.
  2. Dans la page Tableau de bord, cliquez sur « Télécharger les API et les SDK ».
  3. Cliquez sur le bouton de téléchargement à côté de Données du moteur de projection pour télécharger les données du moteur de projection sur votre ordinateur.
  4. Décompressez les données téléchargées sur votre ordinateur.
  5. Créé un

La carte commence par zoomer sur le terrain de l'Observatoire royal de Greenwich. Le point initial se trouve dans la référence spatiale British National Grid, qui a été créée par le United Kingdom Ordnance Survey. La référence spatiale après projection est dans web mercator.


apt-cache rdepends packagename devrait faire ce que vous voulez

aptitude a une façon assez agréable de gérer cela :

Par défaut, il ne répertorie que la raison "la plus installée, la plus forte, la plus étroite, la plus courte", mais vous pouvez utiliser aptitude -v pourquoi pour qu'il affiche tout ce qu'il trouve.

Il existe plusieurs méthodes, chaque méthode affichant une sortie différente.

Pour une vue détaillée de l'arbre de dépendance inverse complet

L'option la plus simple reste :

qui ne nécessite pas l'installation d'un package.

En plus d'autres bonnes réponses, un APT/APT-GET -s effectue une suppression (ou une installation) "simulée".

sudo apt -s supprimer <pkgname>

L'utilisation de -s ou --simulated pour supprimer (ou installer) des packages répertorie normalement toutes les dépendances affectées. Il affichera les packages orphelins lors de la suppression ou les dépendances nécessaires lors de l'installation sans réellement exécuter l'installation ou la suppression . A titre informatif uniquement.


Comment faire une page d'accueil dans Firefox

La modification de la page d'accueil de Firefox est possible via le Domicile onglet des préférences. Vous cherchez le Page d'accueil et nouvelles fenêtres option, que vous souhaitez définir sur URL personnalisées.

Il existe trois façons de définir la page d'accueil :

  • Collez ou tapez une URL dans l'espace vide.
  • Prenez un ou plusieurs sites Web de la Utiliser les pages actuelles bouton. C'est ainsi que vous pouvez définir plusieurs pages d'accueil dans Firefox.
  • Sélectionnez un signet via le Utiliser un signet option.


Obtenir la carte¶

Le ObtenirCarte L'opération demande que le serveur génère une carte. Les paramètres principaux spécifient une ou plusieurs couches et styles à afficher sur la carte, un cadre de délimitation pour l'étendue de la carte, un système de référence spatiale cible et une largeur, une hauteur et un format pour la sortie. Les informations nécessaires pour spécifier les valeurs des paramètres tels que les couches, les styles et les srs peuvent être obtenues à partir du document Capabilities.

La réponse est une image de carte ou un autre artefact de sortie de carte, selon le format demandé. GeoServer fournit une grande variété de formats de sortie, décrits dans les formats de sortie WMS .


Voir la vidéo: GETTING STARTED WITH POSTGIS, GEOSERVER AND OPENLAYERS (Octobre 2021).