Suite

Utilisation de l'interactivité à partir de plusieurs couches produites dans TileMill dans une seule carte

Utilisation de l'interactivité à partir de plusieurs couches produites dans TileMill dans une seule carte


J'ai une carte MapBox.js avec plusieurs couches ici. J'aimerais pouvoir utiliser le teaser et l'interactivité complète de TileMill sur quelques-unes des couches, mais je n'ai pu le faire que pour une seule couche. Comment puis-je avoir de l'interactivité pour plusieurs couches de cette carte ? Le code de la carte est ici. J'ai vu un exemple de MapBox.js mais je ne sais pas exactement comment l'implémenter dans mon code HTML.


Je vois que vous avez activé l'interactivité sur votre carte par la ligne :

map.gridControl.options.follow = true;

… mais n'ont utilisé aucune couche de grille.

Incluez les lignes suivantes sous toutes les déclarations :

var gridlayer1 = L.mapbox.gridLayer('slugis.ii9na2o6').addTo(map); map.addControl(L.mapbox.gridControl(gridlayer1));

J'ai eu le même problème où mes clics n'ouvriraient pas les fenêtres contextuelles souhaitées et j'ai résolu de cette façon.


Comment attacher des événements aux données cartographiques Natural Earth créées dans TileMill ?

Je me rends compte qu'il y a des lacunes conceptuelles dans mes connaissances - je ne sais pas à 100% comment tout s'emboîte dans Mapbox. J'espère que quelqu'un pourra me redresser et m'aider à réaliser ce que j'essaie de faire.

Notre client est une société multinationale dont les sites sont répartis en régions mondiales : Amérique du Nord, Amérique du Sud, Europe et Afrique, Asie-Pacifique, etc.

Ce qu'ils veulent, c'est que la vue cartographique initiale soit une carte du monde agrandie. Lorsque chacune de ces régions individuelles est survolée, les pays appartenant à cette région seront mis en surbrillance, une étiquette sera affichée avec le nom de la région et un clic agrandira la fenêtre pour centrer/afficher la région.

Le problème est qu'il n'y a pas de concept de région sur la carte, et je ne sais pas comment en ajouter une par programmation.

La carte du pays sous-jacente a été créée et stylisée par un designer utilisant TileMill. Il utilise la carte du pays Natural Earth. Lorsque je regarde le projet dans TileMill et que j'inspecte la couche « caractéristiques », il apparaît que le fichier de formes contient une liste des pays individuels avec des métadonnées associées. Jusqu'ici tout va bien.

Idéalement, côté client, j'aurais une liste de pays appartenant à chaque région. Lorsque l'utilisateur passe la souris sur un pays individuel, je détermine à quelle région il appartient, parcourt la liste des pays et applique un effet (comme l'opacité) pour mettre en évidence la région.

Le problème est que je ne peux pas comprendre comment obtenir les métadonnées du pays dans le fichier TileMill pour le pays sur lequel la souris est actuellement survolée. Est-il même possible de joindre des événements et d'accéder aux fonctionnalités ajoutées dans TileMill ?

Pour info : une autre approche que j'ai essayée consistait à ajouter ces données cartographiques au moment de l'exécution. J'ai pu attacher des événements aux fonctionnalités GeoJSON, mais la granularité de la carte est BEAUCOUP inférieure à celle de la carte sous-jacente, elle ne s'aligne donc pas correctement à des niveaux de zoom plus élevés.


Carte interactive - Apple essaie-t-il de breveter des méthodes SIG vieilles de 40 ans ? - Demande de brevet - DEMANDE D'ART ANTERIEUR

Apple a récemment déposé un brevet « Carte interactive » qui ressemble à tous égards à un ensemble de technologies et de méthodes connues sous le nom de « Systèmes d'information géographique » (SIG). 10 minutes de votre temps peuvent aider à réduire les demandes de brevets américains avant qu'elles ne deviennent des brevets. Suivez @askpatents sur Twitter pour vous aider.

La revendication 1 en particulier est utilisée activement par la communauté SIG depuis plus de 40 ans :

  • Stockage d'informations à afficher sur la carte dans une mémoire du dispositif informatique, les informations stockées comprenant une pluralité de différentes couches d'informations, chaque couche contenant un type respectif d'informations

  • Affichage d'une carte sur un écran du dispositif informatique, la carte comprenant une pluralité de couches d'informations superposées les unes aux autres

  • En réponse à une sélection par l'utilisateur d'un mode d'affichage correspondant à un sujet d'intérêt, afficher au moins une couche contenant des informations qui sont associées au mode sélectionné et

  • Améliorer la valeur d'au moins un paramètre d'affichage pour les caractéristiques cartographiques de chaque couche affichée qui sont associées au mode sélectionné, par rapport à une valeur par défaut pour le paramètre d'affichage.

Les innovateurs/éditeurs (manuels. )/brevets probables dans cette veine incluent Esri, Pitney Bowes et Google.

S'il vous plaît aider à trouver l'art antérieur de 5 juin 2012 ou avant.

L'art antérieur peut être n'importe quelle publication (page Web, manuel d'utilisation, papier, livre, vidéo youtube, publication avant délivrance d'un brevet) ou brevet. Il est utile d'établir une date à laquelle l'art antérieur était accessible au public et une référence solide qui peut être citée par l'USPTO. Une référence citable peut souvent être trouvée dans une publication contemporaine sur la technologie dans un magazine, un blog ou un article scientifique. Un autre endroit à regarder est The Wayback Machine.

Aidons à informer l'USPTO !

  • Numéro de publication : NOUS 20130339891 A1
  • Date de priorité : recherche d'antériorités antérieures 5 juin 2012
  • Cessionnaire : Apple, Inc.

La carte Web interactive du district régional de Peace River fournit des informations sur votre adresse municipale, les parcelles de terrain, les limites, les descriptions légales des terres, le zonage, le plan communautaire officiel, la zone rurale de protection contre les incendies et les caractéristiques géographiques telles que les rivières, les ruisseaux, les routes et les limites. Cliquez ici pour la carte Web.

Nous avons récemment mis à jour notre carte Web pour améliorer les fonctionnalités afin de permettre l'accès sur les appareils mobiles. Veuillez envoyer vos commentaires sur la carte ou toute difficulté rencontrée lors de la visualisation de ce site à Aden Fulford.

Les documents sur ce site Web sont fournis par le district régional de Peace River en tant que service public. En accédant au site Web, vous acceptez d'être lié par ces termes et conditions.

Le système d'information géographique (SIG) est une discipline technologique qui intègre du matériel, des logiciels et des données géographiques (spatiales) (telles que les limites, les caractéristiques de l'eau, les grilles, les routes et les photos aériennes) pour capturer, analyser, afficher, modéliser et évaluer des données réelles. problèmes mondiaux. Plusieurs couches de données ou d'informations géographiques peuvent être affichées dans une seule application Web appelée « carte Web interactive ». Ces informations peuvent être extraites de différentes sources de données (bases de données/fichiers spatiaux) hébergées sur plusieurs serveurs informatiques.


Pire. Carte. Déjà.

Quand j'avais 18 ans, j'étudiais le design industriel au Wentworth Institute of Technology à Boston. Assis dans ma conférence d'introduction au design, le professeur parcourait une série de designs influents du 20e siècle lorsque la carte du métro Massimo Vignelli NYC de 1972 est apparue. Le professeur n'arrêtait pas de dire à quel point c'était révolutionnaire mais, étant la première fois que je voyais la carte, tout ce que je pouvais penser, c'était à quel point c'était un bel échec.

La carte Massimo Vignelli 1972 du métro de New York.

Vignelli et sa société, Unimark, avaient un objectif et une philosophie clairs lorsqu'ils ont entrepris de repenser la façon dont les New-Yorkais utilisent le métro. Des années de signalisation différente avaient encombré le système, de sorte qu'il était difficile de s'y retrouver, même pour un motard chevronné. Un langage visuel uniforme a été élaboré avec des points de couleurs vives avec des lignes de train faciles à lire et des blocs de texte rapides qui expliquaient quel service circulait sur quelle voie et quand. Ce langage est encore utilisé aujourd'hui et est devenu une marque de fabrique du système.

Avec ce nouveau système, le besoin d'une carte plus claire est également apparu. Jusqu'à cette époque, les cartes du métro montraient principalement au passager quelle ligne principale était desservie. J'entends par là quelle ligne principale à Manhattan, donc au lieu du train R, vous aviez la ligne Astoria via Broadway et le tunnel jusqu'à Bay Ridge. Cela ne permettait pas de changer de service à temps partiel ou de service de nuit.

Avant de continuer, une distinction doit être faite.

Carte montrant les extensions de métro proposées utilisant les lignes de train de banlieue existantes et anciennes autour de Boston. 1945

Ceci n'est PAS une carte. C'est un schéma :

Schéma de la brochure Nouvelles lignes de métro. 1967. Image du JoeKorNer

La différence est qu'une carte est une référence géographique réduite tandis qu'un diagramme déforme ou élimine la géographie pour montrer un élément plus clairement. Henry Beck a été le premier à le faire pour le plan du métro de Londres en 1933. Dans des endroits comme le bas de Manhattan, les stations sont entassées tandis que dans les arrondissements extérieurs, les stations sont plus éloignées. Une carte géographique serait à la fois trop étroite à lire et aurait trop d'espace perdu. Un schéma qui déforme la géographie permet ainsi de mieux comprendre comment naviguer dans le métro.

Vignelli le savait et a fait un saut radical en termes de design. Chaque service de train était désormais étiqueté et codé par couleur afin de pouvoir être facilement localisé. Fidèle à ses traditions modernistes de « la forme suit la fonction », l'affichage géographique de la forme de la ville a été ajouté après le diagramme principal. Le plus grand élément marquant de cette modification est maintenant Central Park, un rectangle vert de 2,5 milles de long, représenté par un carré gris.

Bien sûr, le changement est difficile, mais ce que les coureurs de l'époque et moi-même avons vu pour la première fois à l'époque, c'est que le point de la carte avait été manqué. Vignelli a déclaré publiquement qu'il estimait que sa carte était uniquement destinée à un cavalier pour naviguer du point A au point B dans le système. C'était et c'est l'utilisation la plus importante pour tout plan de métro.

Mais cette approche résolue contredit le fait que si un passager utilise le métro comme mode de transport principal, il ne s'agit que de la partie médiane d'un voyage total. Un passager doit d'abord se rendre à la station de métro, généralement à pied ou à vélo (ou des parkings incitatifs pour les systèmes plus suburbains), puis, lorsqu'il sort, doit continuer le même chemin jusqu'à sa destination finale. Déformer et éliminer la géographie sous-jacente de la ville signifie que le plan du métro n'est que partiellement utile.

Plan du métro de New York de 1987

La carte Vignelli n'a duré que 7 ans avant d'être remplacée par le prédécesseur de notre moderne “The Map“. Cette carte a laissé les angles durs et la géographie vierge derrière elle et est allée avec une langue vernaculaire plus légère, avec des lignes circulant autour de la ville et des rues principales ajoutées. Et Central Park était un rectangle vert ! Mais même ici, une grande partie du réseau routier et des principales destinations ont été laissées de côté. La clarté du système a prévalu. Les cartographes s'efforcent toujours de trouver l'équilibre parfait entre une communication claire et une situation géographique.

En 2008, Vignelli a été approché par Esquire Magazine pour mettre à jour sa carte emblématique pour qu'elle soit plus contemporaine. Le langage de conception de base des virages à 45 et 90 degrés a été conservé, mais la palette de couleurs a été grandement simplifiée selon les lignes de la carte moderne. Ce qui restait est sans doute les schémas de métro les plus parfaits jamais réalisés. Son concept original était proche, mais il n'était pas encore là. Pourtant, la carte mise à jour, rapidement récupérée par le MTA et utilisée pour son site Web sur les changements de service Weekender, ne montrait pas la géographie appropriée. Il n'était pas non plus bien adapté au rouleau dans lequel il était placé. Le Weekender était destiné à montrer les changements de service, mais la simplicité de la carte Vignelli n'a pas pu montrer la complexité du réseau de métro et la fréquence à laquelle les trains sont détournés.

Carte Vignelli mise à jour en 2011 utilisée pour le site Web de MTA Weekender.

Capture d'écran de la carte du métro MTA Live montrant le bas de Manhattan. Les lignes sont dessinées apparemment au hasard et non géographiquement.

Les objectifs de la toute nouvelle carte (et toujours en version bêta) sont louables : avec la technologie, nous ne sommes plus contraints à de simples cartes papier statiques et pouvons à la place avoir des cartes dynamiques qui montrent différents aspects au fur et à mesure que les utilisateurs naviguent sur la carte. Je ne suis pas un codeur mais c'est quelque chose dont je rêve depuis longtemps. Google Maps a été assez efficace pour cela, car un utilisateur peut zoomer sur un bâtiment et voir différents niveaux à l'intérieur.

L'idée était simple : combiner le design épuré de la carte Vignelli avec la géographie réelle de la ville afin qu'un cycliste puisse zoomer et dézoomer pour affiner son itinéraire.

Le résultat : le pire des deux mondes. La nouvelle carte en direct n'est pas une mauvaise idée, c'est juste une exécution terrible. Il vient de rater la cible et est à moitié cuit il faut qu'il repasse au four.

En haut : capture d'écran de la couche Google Maps Transit montrant le Lower East Side.
En bas : Capture d'écran de la carte MTA Live montrant le Lower East Side avec des lignes séparées de la carte géographique ci-dessous.

Quel est l'intérêt d'avoir une base de carte géographique alors que le schéma du métro ne va pas y adhérer ? Il est évident que les codeurs ont commencé avec les données SIG de la station et ont essayé de faire tracer les lignes de connexion par un ordinateur. Google avait l'habitude de faire cela et les choses ne semblaient pas correctes avec les lignes voyageant vers des endroits où elles ne sont jamais allées. Finalement, ils ont aligné leurs lignes sur leur bonne trajectoire.

Mais ce que les concepteurs ont fait ici, c'est de faire un pas de plus dans le terrier du lapin et d'essayer à la place de connecter chaque station avec des lignes plus conformes au schéma Vignelli. Essayé est vraiment un étirement car aucune des courbes et des angles n'est en fait conforme à la langue vernaculaire de Vignelli. C'est évident puisque vous le diagramme et la carte ne peuvent pas exister dans la même géométrie. Mais pire encore, il semble que les concepteurs aient choisi de dessiner certaines lignes de métro aux mauvais endroits sans raison particulière avec des courbes à des endroits apparemment aléatoires.

Une carte, ou un diagramme, est censée amener un utilisateur du point A au point B. Cette carte fait cela dans un sens basique, puis jette tout le reste par vanité. Au moins Vignelli avait une philosophie. La carte en direct prend cette philosophie et l'étrangle.

En haut : capture d'écran de la couche Google Maps Transit à Coney Island.
En bas : Capture d'écran de MTA Live Map à Coney Island.

On pourrait dire qu'il s'agit d'un algorithme informatique qui dessine le métro. Mais cela ne prend pas en compte des choses comme ces montagnes russes à Brighton Beach ou la façon dont les trains N et Q ont été détournés par un tout nouveau tunnel de métro sous l'East River au lieu de prendre le pont de Manhattan. Non, c'étaient des choix. Des choix faits par des adultes qui ont été payés en argent réel pour faire cela. Au lieu de cela, nous avons quelque chose qu'un enfant de 3 ans dessinerait et qu'un parent afficherait sur son réfrigérateur.

En haut : capture d'écran de la couche Google Maps Transit à Broadway Junction.
En bas : Capture d'écran de MTA Live Map à Broadway Junction.

Écoutez, je ne suis pas un cartographe parfait. Ce blog n'a pas été créé pour que je puisse revendiquer toute sorte d'expertise mais plutôt une vitrine pour mon parcours. Bon sang, la toute première tentative que j'ai faite pour faire un plan de métro complet était cette abomination pour laquelle j'ai été, à juste titre, ridiculisé. J'ai appris et grandi. J'ai également dessiné beaucoup de cartes en utilisant la carte de Vignelli comme base et je suis devenu plus compréhensif et plus respectueux envers le concepteur que j'ai licencié il y a des années.

La carte en direct est une grande étape et le MTA et le NYCT n'obtiennent pas assez de crédit lorsqu'ils essaient de faire ce qu'il faut. Mais cela demande tellement plus de travail. Tout ce que je demande, c'est de lancer l'idée que vous devez fusionner les deux idées (ou comme je l'ai mis sur Twitter, comme si David Cronenberg avait conçu une carte).

L'échec fondamental de cette carte est qu'elle essaie d'être deux choses opposées polaires en même temps. La raison pour laquelle nous avons des schémas de métro est que nous ne pourrions pas avoir de plans de métro parfaits. Mais avec la technologie, nous n'avons pas besoin d'un hybride des deux. Dessinez la carte géographique avec les lignes claires et nettes, mais le long des routes qu'elles suivent vraiment. Ajoutez ensuite les arrêts de bus, le train de banlieue, le PATH (!) et tous les autres transports en commun. Mettez-les sur des calques qui peuvent être activés et désactivés. Montrer uniquement le métro est un gaspillage lorsque nous avons la technologie pour créer une expérience personnalisée pour chaque utilisateur.

Beaucoup en ligne font l'éloge de la carte et je comprends tout à fait qu'il y a des gens qui n'ont aucune idée de mon problème. Ça va, je suis trop instruit. Mais si vous allez vous donner la peine et faire des dépenses, faites les choses correctement. C'était évidemment un travail précipité et ce qui est si décevant, c'est le blitz de relations publiques que le MTA a fait ce matin en montrant la carte. Les gros titres disaient « le grand débat sur la carte est réglé » comme quiconque a quelque chose à voir avec cela sait ce que cela signifie. Ce produit n'est pas prêt et je ne sais pas s'ils le savent ou s'en soucient. Ce qui est encore plus insultant, c'est qu'il y a d'autres designers qui ont déjà fait cette idée de base. Cela n'a pas dû être fait si mal.


Méthodologie

Par Sarah Porter, analyste géospatiale principale et gestionnaire de projet

Remerciements particuliers à Stuart Flack, Lucas Stephens et Madeline Fleisher du Environmental Law & Policy Center et Sandy Bihn avec Lake Erie Waterkeeper

Les proliférations d'algues nuisibles dans le lac Érié ont commencé à apparaître au milieu des années 1990 et ont augmenté en gravité au fil du temps (D&rsquoAnglada et al., 2018). Ces proliférations sont causées par un excès de phosphore, principalement du phosphore dissous, qui est livré au lac à partir des bassins hydrographiques des affluents en amont. Les rejets agricoles non ponctuels sont reconnus comme la principale source d'excès de phosphore dans l'ouest du lac Érié (CMI, 2018), les deux principales sources agricoles étant l'épandage d'engrais commerciaux et de fumier.

Le bassin hydrographique de la rivière Maumee a été identifié comme le plus grand contributeur de phosphore au lac Érié, fournissant environ 30 pour cent du phosphore total provenant des États-Unis et du Canada (Maccoux, 2018). Les engrais commerciaux ont été le principal objectif de la recherche dans la région.

La Commission mixte internationale (2018) estime que 80 pour cent du phosphore agricole généré dans le bassin du lac Érié occidental, ou WLEB, provient d'engrais commerciaux, tandis qu'environ 20 pour cent provient du fumier provenant d'exploitations d'alimentation animale (AFO) (CMI, 2018). Bien que les tendances indiquent une diminution de l'application d'engrais commerciaux dans le BOLE depuis les années 1990, les charges de phosphore dissous dans le lac continuent d'augmenter et les proliférations continuent de s'intensifier. Le phosphore hérité dans le sol, le drainage souterrain et les pratiques de travail du sol sont à l'origine des hypothèses actuelles pour expliquer ces charges croissantes de phosphore dissous (EPA, 2010).

On suppose que l'épandage de fumier des AFO est resté constant au fil du temps (IJC, 2018). Cela est principalement dû au manque d'informations fiables et accessibles au public sur l'emplacement et le nombre de ces installations, ainsi que sur la quantité de fumier et de phosphore qu'elles produisent.

Les exploitations animales dépassant un certain seuil de taille sont soumises à la réglementation des agences gouvernementales. Cependant, de nombreux AFO sont en dessous de ce seuil et n'ont donc pas besoin de demander un permis qui fournirait des informations plus détaillées sur l'emplacement, le nombre d'animaux et d'autres données. En conséquence, les universitaires et les responsables des agences disposent de peu d'informations détaillées sur l'étendue de la production animale dans le bassin versant.

En outre, les réglementations varient d'un État à l'autre, ce qui rend difficile la consolidation des données entre les États. Le but de cette étude est d'utiliser la télédétection pour cartographier tous les AFO dans le bassin de la rivière Maumee entre 2005 et 2018. De plus, nous estimons le nombre d'animaux hébergés dans ces installations et la quantité de fumier et de phosphore qu'ils produisent. Nous espérons que cette information améliorera notre compréhension du rôle que jouent les AFO dans la génération de phosphore dans le bassin de la rivière Maumee.


Avec Esri Maps for MicroStrategy , vous pouvez enrichir vos documents MicroStrategy Report Services avec des cartes interactives en direct, vous permettant d'analyser vos données d'entreprise de manière visuelle et interactive. Esri Maps for MicroStrategy est conçu pour s'intégrer de manière transparente dans les flux de travail quotidiens familiers aux concepteurs et analystes de documents MicroStrategy, sans avoir besoin d'un codage personnalisé ou d'une expérience SIG. Dans Esri Maps for MicroStrategy , les concepteurs de documents peuvent créer des cartes riches qui interagissent avec d'autres jeux de données dans leurs documents et peuvent combiner des données géographiques publiées avec des données commerciales MicroStrategy pour une analyse plus facile.

Avec Esri Maps for MicroStrategy , les concepteurs de documents peuvent :

  • Composez une carte avec des données provenant de plusieurs sources, y compris des données d'ArcGIS.
  • Tracez les données d'entreprise MicroStrategy directement sur la carte.
  • Définissez le style et l'affichage des données cartographiques.
  • Définissez comment les données cartographiques interagissent avec d'autres jeux de données dans le document.

Avec Esri Maps for MicroStrategy , les analystes de documents peuvent afficher, parcourir, interroger et manipuler des cartes dans des documents avec des outils qui ne nécessitent aucune compétence supplémentaire.


Cliquez ici pour en savoir plus sur les fonctionnalités de recherche améliorées. Regarde ça vidéo pour voir la nouvelle recherche en action.

LandVision&trade Version 8 comprend une couche de points d'intérêt améliorée ainsi qu'une toute nouvelle couche de verrouillage du nom le plus fiable de l'industrie, RealtyTrac®. Chaque couche est conçue pour vous fournir un aperçu complet afin de mieux comprendre un seul actif ainsi que le marché environnant.

REMARQUE : Veuillez noter qu'il s'agit de couches premium et qu'elles sont disponibles moyennant des frais supplémentaires. Si vous souhaitez ajouter des couches premium à votre compte, veuillez contacter notre équipe de gestion de compte au 888.322.6277 ext. 5147, ou par e-mail [email protected] .

Cliquez ici pour en savoir plus sur les données améliorées.


Comment augmenter vos revenus avec la segmentation du marché

Toute segmentation marketing dans le monde est inutile si vous n'êtes pas en mesure de fournir un retour sur investissement positif.

Examinons deux manières spécifiques d'augmenter vos résultats grâce à la segmentation du marché.

Des offres spécifiques pour des segments spécifiques

Chacun de vos segments de marché veut quelque chose de différent de votre marque. Si vous avez une marque de vêtements de sport, il y a des hommes et des femmes de différents groupes d'âge. Tous ont des objectifs différents.

Il peut y avoir des coureurs techniques, des gens qui portent des marques de mode ou des acheteurs nonchalants qui veulent le meilleur équipement pour le fitness.

Chaque groupe réagirait au même message d'une manière différente.

Peu d'entreprises utilisent les données que je leur ai fournies pour faire des campagnes ciblées aussi bien qu'ASOS. Il y a deux choses que j'achète beaucoup là-bas, des vêtements d'extérieur et des chaussures. Il semble que chaque fois que je reçois un e-mail de leur part, ils m'informent d'une vente pour l'un ou l'autre.

Voici un e-mail qu'ils m'ont envoyé récemment.

Ils ont segmenté en fonction de deux variables - l'emplacement et les préférences. Dans l'e-mail, ils se sont concentrés sur mon amour des chaussures. 50% était trop pour moi de laisser passer.

ASOS propose une large sélection de chaussures, il peut donc être difficile de trouver ce que vous cherchez. Cet e-mail a restreint ma sélection et m'a donné un accord en même temps.

En bas, ils ont également mis en évidence certaines des marques présentées afin que je puisse acheter uniquement ces chaussures. Cet e-mail était super pertinent et j'ai fini par acheter.

ASOS utilise mon historique d'achats, mais vous pouvez obtenir des résultats similaires en utilisant votre quiz de segmentation de la clientèle.

Un marché de livres électroniques pourrait segmenter le genre de livres que vous avez achetés dans le passé (Amazon le fait en fait).

Poo Pourri va dans une direction légèrement différente. Ils envoient des produits recommandés à leur liste de diffusion et évaluent qui clique sur quoi.

Lorsque vous cliquez sur un produit tel que Vanilla Mint, vous serez segmenté dans une liste de personnes qui l'aiment. Si vous n'achetez pas, le prochain e-mail de la série présente également ce produit.

Cela continue jusqu'à ce que vous ayez acheté le produit ou montré que vous n'en voulez pas. Quoi qu'il en soit, ils ont plus de données pour envoyer des campagnes ciblées à l'avenir.

Doggy Loot segmente ses utilisateurs avec quelques questions de base au moment de l'inscription. Leur page d'accueil a été développée pour capturer les prospects avec une fenêtre contextuelle et une option de menu d'abonnement.

Puis des questions de segmentation.

Une fois qu'ils ont ces informations, l'équipe de Doggy Loot envoie des offres spécifiques pour différents segments de clientèle. Ce genre de tactique devrait figurer dans chaque plan de marketing par e-mail de commerce électronique.

Si vous avez un gros chien, ils vous envoient quelque chose de différent des gens qui ont de petits chiens.

Leurs taux d'ouverture ont augmenté de 10,2 %, les taux de clics étaient de 410 % supérieurs à la moyenne et représentent jusqu'à 13 % des revenus totaux quotidiens.

Les résultats étaient si prometteurs qu'ils ont déployé la nouvelle page d'accueil pour l'ensemble de leur public et ont cherché d'autres moyens de segmenter leur marché.

Ils l'ont fait en ajoutant une page MyDogs où les abonnés pouvaient ajouter le nom, la race, la taille, le sexe et l'anniversaire de leur chien. Ils ont ensuite utilisé ces informations pour envoyer des messages encore plus ciblés à leurs abonnés.

Leurs résultats de cette campagne de marketing par e-mail étaient encore meilleurs. Ils avaient des taux d'ouverture de 28,1%, des taux de clics jusqu'à 750 % supérieurs à la moyenne, et cela contribue jusqu'à 16% des revenus quotidiens.

Du contenu dynamique pour positionner différemment les offres générales

Lorsque vous vous plongerez dans les détails de la segmentation, vous verrez qu'il y a trop de variables (et de personnes) pour créer des e-mails individuels. Pour compenser cela, il existe un remplacement de contenu dynamique.

Il s'agit du processus d'envoi d'un e-mail mais affichant un contenu différent en fonction des préférences du destinataire.

Par exemple, vous pouvez créer un e-mail qui change légèrement lorsqu'il s'agit d'un homme ou d'une femme. Il y aurait également une troisième version lorsque vous n'avez pas les informations spécifiques dont vous avez besoin.

Air New Zealand a créé une campagne d'e-mails dynamique intitulée « Personnalité autorisée ». Lorsque les passagers réservaient des vols, ils recevaient des e-mails personnalisés avant et après le vol.

Dans l'e-mail avant le vol, ils partageaient des informations telles que les prévisions météorologiques, les membres d'équipage de conduite et des images de leur destination.

Dans l'e-mail post-vol, ils ajouteraient un lien vers la plate-forme MyVoice où Air New Zealand permet aux clients de mettre à jour leurs préférences.

Les résultats de l'e-mail préalable au vol ont été un taux d'ouverture moyen de 69 % et un taux de clics unique de 40 %. Pour les e-mails post-vol, ils avaient un taux d'ouverture de 60% et un taux de clics de 40%.

Eventful a plongé tête baissée dans la segmentation de la clientèle en suivant les artistes que leurs clients ont consultés sur le site Web et en créant des e-mails personnalisés.

Un algorithme rassemblerait ces informations et générerait une liste d'artistes susceptibles d'intéresser le client. Les informations étaient insérées dynamiquement dans des e-mails hebdomadaires, ce qui augmentait leur taux de réactivation de 400%.

  • 26 % d'augmentation du taux d'ouverture.
  • Augmentation de 97 % des clics.
  • Augmentation de 56 % du taux de clics pour ouvrir.

TUTORIEL : Utilisation de l'API I/O

L'interface de programmation d'applications d'entrée/sortie Models-3 (API I/O) est une interface de programmation sélective et à accès direct aux données : vous indiquez au système de quelles variables, dates et heures vous parlez et il calcule tout sur les numéros d'enregistrement, etc., pour lui-même. De plus, vous n'avez pas non plus à lire les données dans l'ordre consécutif, ni à les écrire dans l'ordre, vous demandez simplement ce que vous voulez, et l'API d'E/S le trouve pour vous (bien qu'il y ait des pénalités de performances modérées pour écrire des données dans le désordre). Les fichiers sont des fichiers auto-descriptifs, c'est-à-dire que les en-têtes de fichiers contiennent toutes les informations de dimensionnement et descriptives nécessaires sur les données qu'ils contiennent.

Il existe un modèle objet sous-jacent pour les données environnementales (en particulier les données atmosphériques) et les modèles qui l'utilisent &mdash voir le document sur les exigences pour plus de détails. En général, si vous vous demandez comment manipuler les objets sous-jacents selon les conventions de l'API I/O, il existe probablement une routine API I/O ou m3tools . programme déjà écrit pour le faire pour vous.
D'un autre côté, un certain nombre de personnes ont tenté de « contourner » l'API et de la traiter comme un « format de données », en lisant ou en écrivant ses données directement avec leurs programmes (par exemple, PAVE et VERDI ). Jusqu'à présent, chacune de ces tentatives a échoué à un degré ou à un autre.

Il existe des versions de l'API d'E/S appelables depuis Fortran et depuis C. Ce document décrit l'interface Fortran, l'interface C est très similaire. La principale différence entre les deux est que les fonctions Fortran LOGICAL renvoient .TRUE. ou fausse. correspondent aux fonctions C renvoyant 1 ou 0, les fichiers d'inclusion Fortran ".EXT" correspondent un-à-un aux fichiers d'inclusion C ".h", et les appels C ressemblent beaucoup aux appels Fortran, sauf que les descriptions de fichiers sont transmises via des pointeurs vers structures de données typées dans fdesc3.h au lieu d'un COMMON trouvé dans FDESC3.EXT

Il y a 9 routines d'E/S fondamentales que vous devez connaître, elles sont décrites plus en détail dans les sections suivantes de la documentation. (En tout, il existe environ 200 routines Fortran et 60 C, dont beaucoup sont des routines "privées" utilisées en interne. Voir le manuel I/O API Programmers Manual.)

INIT3() pour démarrer (renvoyant le numéro d'unité Fortran pour le fichier journal, il peut être appelé à plusieurs reprises, et est un "no-op" pour de tels appels répétés) M3EXIT() , pour fermer correctement les programmes, il vide tous les fichiers, génère des messages de sortie dans le journal du programme, puis termine le programme avec un état de sortie fourni par l'utilisateur (qui doit être 0 en cas de réussite et différent de zéro en cas d'échec).
Il s'agit d'une exigence pour une bonne gestion des processus. OPEN3() pour ouvrir des fichiers DESC3() pour obtenir les descriptions de fichiers READ3() , INTERP3() , XTRACT3() et DDTVAR3() pour lire, lire et interpoler dans l'heure ou les données dérivées de la lecture et de l'heure de respectivement et WRITE3() pour stocker les données dans des fichiers.

PARMS3.EXT pour Fortran et parms3.h pour C contiennent les paramètres de dimensionnement et les paramètres "magic number" utilisés pour contrôler le fonctionnement de diverses routines dans l'API I/O

FDESC3.EXT pour Fortran et fdesc3.h pour C ont des COMMON s ou struct s qui contiennent des descriptions de fichiers (plus à ce sujet plus tard) FDESC3.EXT a besoin de PARMS3.EXT pour son propre dimensionnement et

IODECL3.EXT pour Fortran et iodecl3.h pour C ont des déclarations et des commentaires d'utilisation pour les différentes fonctions de l'API I/O (vraiment un petit manuel sur l'API I/O à part entière).
iodecl3.h #include automatiquement à la fois parms3.h et fdesc3.h

Normalement, les routines Fortran qui utilisent l'API I/O devraient commencer comme suit, pour définir toutes ces déclarations, PARAMETER s et INTERFACE s : les codes C devraient de la même façon

Lorsque vous exécutez un programme qui utilise l'API d'E/S, vous commencez par la séquence de commandes setenv qui définissent les valeurs des noms logiques du programme, tout comme vous commencez un programme Cray Fortran (normal) avec une séquence de commandes ASSIGN pour son des dossiers. Par exemple, si " myprogram " a des noms logiques " foo " et " bar " que je veux connecter aux fichiers " somedata.mymodel " et " otherdata.whatever " from directory " /tmp/mydir ", le script du programme ressemblerait à quelque chose comme : les fichiers distribués PnetCDF/MPI sont indiqués par un premier MPI : préfixe, par exemple,

Les fichiers binaires natifs (pour NCEP) sont indiqués par un BIN de tête : préfixe, par exemple,

Les fichiers VOLATILES sont indiqués par un -v de fin dans la commande setenv, comme ci-dessus, afin de dire à l'API d'E/S d'effectuer des opérations de synchronisation de disque avant chaque entrée et après chaque opération de sortie sur ce fichier. De tels fichiers sont accessibles par d'autres programmes pendant que le programme de génération est toujours en cours d'exécution et sont lisibles même s'il ne parvient pas à effectuer un SHUT3() ou M3EXIT(), ou si le programme se bloque de manière inattendue).

Les fichiers virtuels BUFFERED peuvent être utilisés pour fournir un échange de données sécurisé et structuré &mdash de types "gridded", "boundary", ou "custom" uniquement &mdash entre différents modules dans le même programme. If you setenv the value of a logical name to the value BUFFERED , as given below: then the I/O API will establish in-memory buffers and time indexing for "qux" instead of creating a physical file on disk. One module can then use WRITE3() (see below) to export data for sharing, which other modules would then use READ3() or INTERP3() to import. Note that since these routines associate the data with its simulation date-and-time, the system will notice the error (and warn the user) if you attempt to get and use data before it has been produced. Note also that by changing the setenv in the script between "BUFFERED" and a physical file-name, you can change between efficient data sharing between modules and high-resolution instrumentation of the data being shared, without changing the underlying program at all.

COUPLING-MODE virtual files can be used to provide PVM-based data exchange between cooperating programs using exactly the unchanged I/O API programming interface, with the kind of name-based direct-access semantics that provides, with the extra scheduling condition that requests for data that has not yet been written put the requester to sleep until it becomes available (at which time the requester is awaked and given the requested data). The decision of which files are disk-based and which are COUPLING-MODE virtual files is also made by setenv commands at program-launch, the value being of the form virtual <communications-channel-name> or PVM:<communications-channel-name> as in one of the following:

Except for INIT3() (which returns the Fortran unit number for the log file), all of the fundamental I/O API routines are LOGICAL functions returning TRUE for success and FALSE for failure.

There are a number of dimensioning parameters and "magic number" token values for the I/O API. Throughout the I/O API, names (logical file names, variable names, and units) are character strings with maximum length NAMLEN3 = 16 descriptions are either one or MXDESC3 = 60 lines of length at most MXDLIN3 = 80 . The I/O API currently supports up to MXFILE3 = 64 open files, each with up to MXVARS3 = 2048 variables ( MXVARS3 = 120 for I/O API version 3.0 or earlier).

The include-files FDESC3.EXT for Fortran, and fdesc3.h for C contain heavily annotated declarations for all the variables in a file description, together with the two commons which are used by the I/O API to store and retrieve the file descriptions. The DESC3() routine takes a file and puts its description into the FDESC3 COMMON s OPEN3() does roughly the reverse when dealing with new or unknown files, taking a description from the FDESC3 commons and building a new file according to those specifications, or performing a consistency check with the description stored in the file's header if the file already exists. A typical call to DESC3() might look like: Some of the items in a file description, such as the dates and times for file creation and update, and the name of the program which created the file, are maintained automatically by the system. Others describe the variables in the file: the file type (as described above), the number of variables, their names, unit designations, and descriptions, as well as the description of the file as a whole. Still others dimension the data: the number of layers and the grid dimensions (where for ID and profile files, the number of sites is mapped onto the rows dimension for profile files, the number of vertical levels is mapped onto the columns dimension). Still other parts of the file description specify the geometry of the grid: the map projection used, its projection parameters, and the grid's location and cell-size relative to that map projection the vertical-grid-coordinate type and the boundary values separating the model layers.

All files manipulated by the I/O API have multiple variables, each having possibly multiple layers. Within a file, all the variables are data arrays have the same dimensions, number of layers and the same structure-type of data, although possibly different basic types (e.g., gridded and boundary varaibles can't be mixed within the same file, but real and integer variables can). Each file has a time step structure shared by all of its variables, as well. There are three kinds of time-step structure supported: Time-independent. The file's time-step attribute is set to zero.
Routines which deal with time-independent files ignore the date and time arguments. Time-stepped. The file has a starting date, a starting time, and a positive time step. Read and write requests must be for some positive integer multiple of the time step from the starting date and time, or they will fail. Circular-buffer. The file keeps only two "records", the "even" part and the "odd" part (useful, for example, for "restart" files where you're only interested in the last good data in the file). The file's description has a starting date, a starting time, and a negative time step (set to the negative of the actual time step) read and write requests must be for some positive integer multiple of the time step from the starting date and time -- and must be for a time step actually present -- or they will fail.

NOTE 2: By convention, standard-year and standard-week data are represented by using year 0 :
for example, if one has monthly standard year data, one may store the data in a file starting at Dec. 16 of Year -1 ( JDATE=-650=-1000+350 , where YYYY=(-1000), DDD=350 ), with time step 7300000 (30 days, 10 hours) and 14 time-steps (for December of Year (-1) through January of Year 1), to provide "fenceposts" for daily or hourly interpolation using INTERP3() .
Similarly, a standard-week file might have starting date&time 0000001:000000, time step 240000 (one day), and 7 time steps one would then use CURRSTEP() (described below) to determine dates and times for READ3() .

There are eight structure-types and four basic types of data supported by the I/O API. The structure-types are associated with file type parameter values ("magic numbers")

The basic types are associated with "magic numbers"

For several of the "structured" data types below, neither Fortran nor C data-structuring constructs are powerful enough to handle the general case one is often forced to use single-indexing/data-overlay tricks such as those found here in m3tools program mtxcalc .

  • the general thickened-boundary case, NTHIK > 1, available as Postscript, as X11 Bitmap, as JPEG, or as GIF
  • the simple case, NTHIK = 1, available as Postscript, as X11 Bitmap, as JPEG, or as GIF
  • the internal-boundary case, NTHIK = -1 (< 0), available as Postscript, as X11 Bitmap, as JPEG, or as GIF.
In order for the I/O API to start itself up correctly, and in order to make sure that files are closed (and that file headers are updated) correctly, you need to call the INIT3() function at the start of your program, and the SHUT3() function (which flushes headers for, and closes all files currently open) at the end, or else the CLOSE3() function for each file opened. It is a modeling-system requirement that you should use the utility routine M3EXIT() for program termination. It will call SHUT3() correctly (as well as writing explanatory messages to the log), and then return the program's success/failure status (0 for success, non-zero for failure) to the operating system.

INIT3() is an integer function for initializing the I/O API, and must be called before any other I/O API operation. It returns the unit number to be used for the program's log (if you setenv LOGFILE <path> , the I/O API's log and error messages will be written to this unit otherwise, they go to standard output, unit 6). INIT3() can be called as many times as you want, to get the unit number for the program log.

SHUT3() is a logical function that returns TRUE if the system successfully flushed all I/O API files to disk and shut itself down, and FALSE if it failed. If it failed, there probably was a hardware problem -- not much you can do about it, but at least you ought to be able to know. It is legal to call SHUT3() and close down all files currently open, and then to call INIT3() again and open new ones.

M3EXIT() is the routine used for normal program-termination . It calls SHUT3() as the final step of its operation, after writing a user supplied message with the current simulation date-and-time to the program log, and then returns the program's exit status (0 for normal completion, non-zero for program-failure) to the operating system.

CLOSE3() is a logical function that returns TRUE if the system successfully flushed the indicated file to disk and closed it, and FALSE if it failed. It should not be used by modeling programs, because its use destroys modularity it was intended for use only by long-running visualization programs.

Use OPEN3(FNAME,FSTATUS,PGNAME) to open files, whether files that already exist or files that are new. OPEN3() is a logical function that return TRUE when it succeeds, and FALSE when it fails. It also maintains much audit trail information stored in the file header automatically, and automates various logging activities. A couple of additional pieces of audit trail information requires a bit of work from you in setting up standard environment variables, if you want to take advantage of it: if you define the description of your program run in a text file of up to 60 lines of up to 80 characters each, and then setenv SCENFILE to that file before you run the program, then OPEN3() will copy the SCENFILE information into the UPDSC3D field in the headers of any output files for that program. Also, if you setenv EXECUTION_ID to your own identifier (up to 80-character quoted line) for the program execution, it will automate the storage and the logging of that identifier in the EXECN3D field . Finally, if you setenv IOAPI_CHECK_HEADERS YES , then the I/O API will perform a sanity check on internal file descriptions -- checking that grid description parameters are in range, for example, or that vertical levels are either systematically increasing or systematically decreasing.

The arguments to OPEN3() are the logical name FNAME of the file, an INTEGER "magic number" FSTATUS indicating the type of open operation and the caller's name PGNAME for logging and audit-trail purposes. You can call OPEN3() many times for the same file without hurting anything, if you want -- as long as you don't first open it read-only and then try to change your mind and then open it for output, or try to open it as a NEW file after it is already open. Names and values for the mode-of-opening magic number argument are defined in PARMS3.EXT as the following: FSREAD3 = 1 for READ-ONLY access to an existing file
This is the mode that should be used for input files.

FSRDWR3 = 2 for READ/WRITE/UPDATE access to an existing file
rarely used

FSNEW3 = 3 for READ/WRITE access to create a new file (file must not yet exist)
should be rarely used leads to obscure "why is my program failing?" errors

FSUNK3 = 4 for READ/WRITE/UPDATE access to a file whose existence is unknown (creates the file if it does not yet exist, otherwise, performs consistency checks with the user-supplied file definition).
This is the mode that should normally be used for output files.

FSCREA3 = 5 for CREATE/TRUNCATE/READ/WRITE access to files: If the file is open, close it. If the file exists, delete it. Then create a new file according to the user-supplied file definition.
NOTE: dangerous, but the Powers That BE® insisted.
Joan Novak (EPA) and Ed Bilicki (MCNC) have declared as a software standard that modeling programs may not use FSCREA3 as the mode for opening files. FSCREA3 is reserved for use by analysis/data extraction programs only.

To get a file's description, you use the DESC3(FNAME) function. When you call DESC3() , it puts the file's complete description in the standard file description data structures in FDESC3.EXT . Note that the file must have been opened prior to calling DESC3() . A typical output-file call sequence might look like:

There are four routines with varying kinds of selectivity used to read or otherwise retrieve data from files: READ3() , XTRACT3() , INTERP3() , and DDTVAR3() . All of them are logical functions that return TRUE when they succeed, FALSE when they fail. READ3(FNAME,VNAME,LAYER,JDATE,JTIME,BUFFER) reads one variable VNAME or all variables (if VNAME=ALLVARS3='ALL' ) and one or all layers (if LAYER=ALLAYSS3=-1 ) from the file FNAME for a particular date and time JDATE:JTIME

XTRACT3(FNAME,VNAME,LAY0,LAY1,ROW0,ROW1,COL0,COL1,JDATE,JTIME,BUFFER) reads a windowed subgrid BUFFER=GRID(COL0:COL1,ROW0:ROW1,LAY0:LAY1) where FNAME must be of type GRDDED3 , with full-grid array dimensions GRID(NCOLS3D,NROWS3D,NLAYS3D) . Otherwise, it is much like READ3()

INTERP3(FNAME,VNAME,CALLER,JDATE,JTIME,RSIZE,BUFFER) time-interpolates the requested variable from the requested file to the requested date and time (optimizing disk accesses and interpolation-buffer manipulation internally behind the scenes). FNAME must have type GRDDED3, CUSTOM3, or BNDARY3 , and RSIZE=NCOLS3D*NROWS3D*NLAYS3D must be the total array-size.

DDTVAR3(FNAME,VNAME,CALLER,JDATE,JTIME,RSIZE,BUFFER) computes the time-derivative, much as INTERP3() time-interpolates.

For time independent files, the date and time arguments are ignored.

Throughout the EDSS and Models-3 systems -- and particularly in the I/O API -- dates and times (and time-steps) are stored as integers, using the coding formats where the year is 4-digits (1994, say, rather than just 94), and the day is the Julian day-number (1. 365 or 366). By convention, dates and times are stored in Greenwich Mean Time.

There are a number of utility routines for date and time manipulation, , as well as a number of programs for date and time manipulation some of these programs are designed for interactive use, others for scripting. The most frequently used of these programs are juldate , for converting calendar dates to Julian dates, and gregdate , for converting Julian dates to calendar dates and reporting the day-of-the-week. Both of these programs also report whether daylight savings time is in effect for the specified date.

The most frequently used utility routines for manipulating dates and times are described below. Note that for these routines, time steps may perfectly well be negative -- just make sure you keep the parts all positive or all negative a time step of -33000 means to step three and a half hours into the past, for example. This way of representing dates and times is easy to understand and manipulate when you are watching code in the debugger (you don't have to turn "seconds since Jan. 1, 1970" into something meaningful for your model run, nor do you have to remember whether April has 30 days or 31 when your model run crosses over from April to May). Some useful utility routines for manipulating dates and times are the following: NEXTIME( JDATE, JTIME, TSTEP ) is a subroutine which updates date and time JDATE:JTIME by the time step TSTEP (which may be either positive or negative)

LASTTIME( SDATE,STIME,TSTEP,NRECS, EDATE,ETIME ) is a subroutine which computes the ending date&time EDATE:ETIME for a time step sequence starting at SDATE:STIME , with time step TSTEP and NRECS steps.
Safe from INTEGER overflow, even for multiple centuries

TIME2SEC( TSTEP ) is an integer function which returns the number of seconds in the time interval TSTEP

SEC2TIME( SECS ) is an integer function which returns the time interval HHMMSS for the specified number of seconds

SECSDIFF( ADATE, ATIME, ZDATE, ZTIME ) is an integer function which returns the number of seconds from ADATE:ATIME to ZDATE:ZTIME
Subject to INTEGER overflow for periods longer than aboaut 21 years.

DT2STR( JDATE, JTIME ) is a CHARACTER*24 utility function which returns a string for the date and time, as for example "09:12:25 April 28, 1994"

CURREC( JDATE, JTIME, SDATE, STIME, TSTEP, CDATE, CTIME ) is an INTEGER function which returns the record number for the time step that contains JDATE:JTIME in the time step sequence SDATE:STIME:TSTEP , even if JDATE:JTIME is not an exact time step, and sets CDATE:CTIME to the exact date&time for this time step sequence. If JDATE:JTIME is before SDATE:STIME , returns -1.

HHMMSS( JTIME ) is a CHARACTER*10 utility function which returns the string for the time "HH:MM:SS" (like the first field from DT2STR() )

ISDSTIME( JDATE ) is a LOGICAL utility function which returns TRUE when daylight savings time is effect for JDATE

JSTEP3( JDATE, JTIME, SDATE, STIME, TSTEP ) is an INTEGER function which returns the timestep-record number corresponding to JDATE:JTIME if JDATE:JTIME is exactly on the timestep sequence, or -1 otherwise.

MMDDYY( JDATE ) is a CHARACTER*14 utility function which returns a string "Month DD, YYYY" for the date (like the second field from DT2STR() )

DAYMON( JDATE, MONTH, MDAY ) is a utility subroutine which returns the month (1, . 12) and day of month (1, . 31) for the specified Julian date

WKDAY( JDATE ) is a utility integer function which returns the day-of-week (1=Monday, . 7=Sunday) for the specified Julian date
NOTE: Non-standard week (beginning with Monday instead of Sunday) dictated by the emissions modelers.

JULIAN( YYYY, MONTH, MDAY ) is a utility integer function which returns the Julian day (1, . 365,366) for a specified year, month (1-12), and day of month (1-31).

Horizontal coordinate systems (or "map projections" ) define Cartesian X-Y coordinate systems on regions on the surface of the Earth. Typically, they have various defining parameters, which are given in term of the fundamental "Lat-Lon" or "geographic" coordinate system. See https://en.wikipedia.org/wiki/ISO_6709 for a description of the international standard ISO 6709 for representation of latitude, longitude and altitude for geographic point locations.

For example, a Lambert coordinate system is the result of projecting the surface of the Earth from the center of the Earth onto a cone with axis the North-South axis of the Earth, that intersects the Earth at two latitudes ALPHA and BETA , cutting it diametrically opposite a central longitude GAMMA and unrolling it flat, then placing the coordinate origin (X=0,Y=0 at longitude and latitude XCENT,YCENT .

Horizontal Grids are then defined in terms of horizontal coordinate systems. In particular, regular grids have rectangular sides parallel to the coordinate axis, a starting corner XORIG,YORIG defined in term of the map-projection coordinates, a constant cell size XCELL,YCELL , and dimensions NCOLS in the X direction and NROWS in the Y direction, so that the cell at column and row C,R is defined by inequalities XORIG + (C-1)*XCELL &leq X &leq XORIG + C*XCELL
YORIG + (R-1)*XCELL &leq Y &leq YORIG + R*YCELL

Grid Boundary data structures are defined by a thickness NTHIK cells around the perimeter of a rectangular grid.

Vertical coordinate systems typically have some sort of meteorologically-defined vertical coordinate variable vertical grids are rarely regular, and instead have a dimensions NLAYS and cells with non-uniform thicknesses V(0), V(1), . V(NLAYS) , where V is the vertical coordinate variable. Then cells are defined by "layer-surface" inequalities, e.g. for layer L ,

See this page for a more-complete description of I/O API map-projection and grid-description conventions.

There are a number of utility routines for grid and coordinate related tasks (such as coordinate-transforms and interpolation), which are indexed here. In particular, see MODULE MODGCTP , which provides a number of routines that use the USGS Grid Coordinate Transformation Package (GCTP) routines.

A number of the m3tools programs are designed for grid- and coordinate-related tasks. Particularly notable are the following:

m3wndw and bcwndw : extract data data from a gridded file to a subgrid window or its boundary.

m3cple : copy to the same grid, or interpolate to another grid a time sequence of all variables from a source file to a target file, under the optional control of a "synch file".

mtxcalc and mtxcple : build a grid-to-grid sparse-matrix transform file using a sub-sampling algorithm, and use it to re-grid a time sequence of all variables from a source file to a target file, respectively.

projtool : Perform coordinate conversions and grid-related computations,

latlon : construct GRIDDED and/or BOUNDARY files with variables the cell-center LAT and LON .

gridprobe : Extract ASCII and/or I/O API time series from a GRIDDED file for a set of Lat-Lon designated points.


Voir la vidéo: Miten suunnistat Nuuksiossa 2