Suite

Existe-t-il un meilleur moyen de convertir des données raster en points ? Pas besoin d'un point pour chaque cellule


J'ai besoin de convertir les données raster en données ponctuelles pour pouvoir utiliser les points pour l'interpolation via le krigeage. Mon problème est que ma résolution est de 5 pieds et je travaille sur une ville entière. Les données que je convertis en points sont regroupées par zone avec des valeurs Aucune donnée entre ; la plupart/tous les points de chaque zone ont la même valeur. J'ai besoin de la haute résolution car certaines zones sont linéaires, seulement 2-3 cellules de large et environ 20 cellules de long, tandis que d'autres sont d'énormes mastodontes. J'ai besoin de capturer les zones plus petites mais je n'ai pas besoin de 2000 points dans les zones plus grandes ; parce que les valeurs sont toutes les mêmes, j'aurais peut-être besoin de 10 ou 20. J'ai essayé d'abaisser la résolution à 50 et 100 pieds, mais je perds une grande partie des zones plus petites. Mon raster est des données flottantes, donc la conversion en polygones pour faire d'autres trucs vectoriels n'est pas possible, je ne pense pas.

Suis-je condamné à avoir un milliard de points et à en supprimer manuellement des gros morceaux de données ?

Quel type de temps de traitement est-ce que je regarde si je fais 5 pieds Raster à Point et que j'ai un point par cellule et que j'interpole ceux-ci ? Il a déjà fallu plusieurs heures pour interpoler entre 10 points par krigeage sur l'ensemble de la zone.

Je ne voudrais pas sacrifier la résolution de mes données pour les petites zones si je peux l'aider. Ils sont très importants et représentent la variabilité que je dois capturer.


En utilisant GDAL et Python, vous pouvez diviser les zones de la ville en rasters séparés, puis les convertir en points xyz séparés par des virgules à l'aide de gdal2xyz.py. L'option de saut vous permet de contrôler votre fréquence d'échantillonnage (c'est-à-dire le nombre de cellules raster converties en points). Par exemple, un facteur de saut de 3 signifie que vous convertissez un pixel sur trois :

gdal2xyz.py -skip 3 -csv InputRasterName OutCSVName

Vous pouvez ensuite utiliser des pandas pour supprimer les points nodata :

import pandas InputCSV = 'xyz.csv' OutputCSV = 'xyz_v2.csv' # Lire les données CSV = pandas.read_csv(InputCSV, sep=",", header=None, index_col=None) # Supprimer les points sans données (par exemple zéro) dans vos valeurs z NewData = Data[Data[2] != 0] # Exporter les données triées vers CSV NewData.to_csv(OutputCSV, header=['x','y','z'], index=False)

Vous pouvez ensuite importer le fichier CSV dans QGIS ou ArcMap et convertir les données en un fichier de formes ESRI ou tout autre format vectoriel.

Quelque chose de similaire peut être réalisé dans R en utilisant le package raster :

# Ouvrir le raster r <- raster("ImageName") # Convertir les cellules raster > 0 en points points <- rasterToPoints(r, fun=function(r){r>0}, spatial=FALSE) # un autre exemple, les cellules raster = 1 aux points points1 <- rasterToPoints(r, fun=function(r){r==1}, spatial=FALSE) # un autre exemple, les cellules raster = 2 aux points points2 <- rasterToPoints(r, fun=function(r) {r==2}, spatial=FALSE) # prend un échantillon aléatoire de 100 points/pixels sample <- points[sample(1:nrow(points), 100, replace=FALSE),] sample1 <- points1[sample( 1:nrow(points1), 100, replace=FALSE),] sample2 <- points2[sample(1:nrow(points2), 100, replace=FALSE),] # Exporter les points vers csv write.table(sample, file= "Points.csv", row.names=FALSE,, col.names=TRUE, sep=",") write.table(sample1, file="Points_1.csv", row.names=FALSE,, col.names= TRUE, sep=",") write.table(sample2, file="Points_2.csv", row.names=FALSE,, col.names=TRUE, sep=",")

L'utilisation d'un échantillonnage aléatoire stratifié vous permettra de dire "10 points dans cette classe", par exemple dans QGIS. Vous devrez peut-être d'abord convertir en polygones, je ne suis pas sûr.


Insérez un PDF vectoriel dans Powerpoint SANS perdre en résolution

Il semble qu'il n'y ait pas de solution pour insérer une figure vectorielle (par exemple PDF) dans MS Office (Word et Powerpoint). D'autres ont suggéré de convertir d'abord l'image en une image raster haute résolution, par ex. ici et sur les forums de support Microsoft. Cependant, aucune des solutions de contournement ne conservera l'image insérée en tant que figure vectorielle (ce qui présente de nombreux avantages par rapport à une image raster, par exemple, vous pouvez sélectionner et rechercher du texte). Ma solution de contournement consiste à enregistrer le PowerPoint au format PDF après avoir inséré l'image. De cette façon, vous pouvez conserver l'image dans une image vectorielle. Est-ce que quelqu'un connaît une meilleure solution?

Je suis un utilisateur Mac, donc je serais plus intéressé par une solution Mac ici.


5 réponses 5

Vous pouvez faire beaucoup de choses avec des graphiques vectoriels, mais les graphiques vectoriels doivent éventuellement être rendus en pixels, rasters, etc. Ce processus de rendu devient plus lent à mesure que vous disposez de données. En fait, les graphiques 3D sont également des données graphiques vectorielles. Les rendus 3D montrent les limites de votre vitesse de rendu, car de nombreux rendus à la taille d'impression prennent des heures à faire.

Image 1: Les graphiques 3D sont en quelque sorte des images vectorielles, la rastérisation est souvent lente et nécessite des outils spéciaux.

Deuxièmement, la plupart des capteurs vous permettent uniquement de faire des captures basées sur des pixels, car l'échantillonnage est discret. En pratique, la discrétisation présente de nombreux avantages dans le domaine du calcul. De nombreux processus deviennent beaucoup plus faciles à réaliser lorsque vous avez des échantillons de données discrets. Ainsi, des choses comme le flou peuvent être coûteuses en temps de calcul pour le moteur vectoriel. Encore une fois, ce n'est pas un facteur limitant, juste un facteur pratique.

Troisièmement, la manipulation des pixels est BEAUCOUP plus facile à comprendre, car elle se rapproche beaucoup mieux du fonctionnement des supports du monde réel. Donc, combiné avec des effets discrets plus faciles, c'est souvent beaucoup plus pratique que de vectoriser votre support.

En fait, il existe une division très floue entre raster et vecteur et souvent vous mélangez les méthodes de sorte qu'il est difficile de dire ce qui est vecteur et ce qui ne l'est pas. Par exemple, liquéfier est en quelque sorte un effet vectoriel sur les données basées sur les pixels.

TLDR Vous utilisez donc des graphiques en pixels car c'est plus facile, plus rapide et plus compréhensible. Il fait le travail.

Si les images vectorielles présentent de nombreux avantages, elles présentent également des inconvénients.

Les données vectorielles sont, en général, mieux adaptées aux éléments qui ont des bords durs. Les graphiques vectoriels n'excellent pas dans la création de zones ou de formes à bords doux qui se fondent dans d'autres formes à bords doux.

Oui, vous pouvez utiliser raster effets dans de nombreuses applications graphiques pour brouiller ou "dédéfinir" les bords de quelque chose. Cependant, cela crée finalement des images raster intégrées. Dans de nombreuses applications vectorielles, l'interpolation et la mise à l'échelle de raster n'est pas quelque chose qui se produit ou si c'est le cas, cela ne se produit pas avec d'excellents résultats.

Alors que les logiciels ont beaucoup progressé, il y a vraiment beaucoup de choses qui ne peuvent pas être accomplies efficacement dans les images vectorielles. S'il est vrai que vous pouvez "tracer" la plupart des images raster pour les convertir en vecteurs, beaucoup de ces traçages sont moins qu'optimaux si le sujet est dans celui qui contient des choses comme des zones floues ou floues.

Le sujet est un facteur énorme. Si une image a déjà des bords nets, il n'y a aucune raison de ne pas utiliser une version vectorielle. Mais les images raster floues jamais trace bien. Réalisez pour les logos, les dessins, etc. les données vectorielles peuvent être parfait. Cependant, pour les portraits, les paysages brumeux, etc. les données vectorielles seraient insuffisantes.

En fin de compte, tout se résume à apparence désirée. Si vous parvenez à tout tracer et que vous perdez finalement les bords flous des photographies, alors plus de puissance pour vous. Cependant, presque tous les tracés comportent un indicateur clair que l'image est ne pas lisse sur toute la ligne. Je vous défie de me montrer un tracé d'une image raster floue qui exactement imite son original. Il y a toujours certains donnent et prennent.

Pensez à la différence entre un GIF et un JPG - il y a simplement certaines choses qui ne fonctionnent pas bien dans le format GIF. Il en va de même pour les images vectorielles - il y a simplement certaines choses qui ne fonctionnent pas bien et cela n'a pas de sens de Obliger une image dans un format indésirable lorsque les résultats finaux ne seront pas déjà être égal à l'original.

J'aime les vecteurs et les utilise autant que possible. Mais je sais aussi qu'on ne peut pas jeter le bébé avec l'eau du bain. Les images raster ont leurs avantages et ne seront probablement jamais complètement abandonnées.


3 réponses 3

Une solution pourrait être celle-ci, mais après avoir importé le df :

Ou puisqu'il y a NaN avec :

Solution possible si les valeurs manquantes ne sont pas dans les colonnes numériques - paramètre publicitaire keep_default_na=False pour ne pas convertir les valeurs vides en chaînes, mais il ne convertit PAS en NaN dans toutes les données, pas toujours dans la première colonne, vérifiez également la documentation :

Pour moi, dans pandas 0.23.4, votre solution fonctionne parfaitement, cela signifie donc un bug dans les versions inférieures de pandas :

Spécifier le format flottant lors de l'écriture en csv

Depuis votre problème sous-jacent est le format de sortie lors de l'exportation de données, aucune manipulation n'est requise. Utilisez simplement :

Puisque vous voulez que seules des colonnes spécifiques aient ce formatage, vous pouvez utiliser to_string :

Conserver les données numériques

Il y a une colonne avec des identifiants, qui se composent uniquement de chiffres

Si votre colonne ne comprend que des chiffres, ne convertissez pas en chaînes ! Votre désir de convertir en chaînes semble être un problème XY. Les identifiants numériques doivent rester numériques.

Float NaN invite le transtypage ascendant

Votre problème est que les valeurs NaN ne peuvent pas coexister avec des entiers dans un numérique séries. Puisque NaN est un float , Pandas force le transtypage ascendant. C'est naturel, car l'alternative dtype d'objet est inefficace et déconseillée.


R [raster] : Comment utiliser un calque raster pour déterminer la transparence d'un autre calque ?

Supposons que j'ai deux couches raster, une de l'abondance estimée d'une espèce donnée dans une zone donnée, et une autre avec une certaine mesure d'incertitude des estimations. Pour garder les choses simples, j'utilise un exemple très simplifié, donnant les deux cartes ci-dessous (gauche : abondance, droite : incertitude).

Dans cet exemple, les estimations de la partie nord de la zone sont moins sûres que celles du sud. Je recherche une possibilité de combiner l'abondance et l'incertitude dans une seule carte. J'aimerais visualiser l'incertitude en utilisant les mêmes couleurs que dans la carte de gauche et en modifiant la transparence de chaque cellule de la grille en fonction de la valeur d'incertitude dans la carte de droite. Par conséquent, les estimations d'abondance dans la partie nord devraient être plus transparentes (moins certaines) que les estimations dans le sud (plus certaines). Cependant, l'argument alpha n'accepte qu'une seule valeur, par exemple :

Lorsque j'essaie d'utiliser un vecteur, seul son premier élément est utilisé.

Ma question : Comment puis-je utiliser les informations de la carte d'incertitude pour modifier la transparence de la carte d'abondance ? Tout indice vers une solution ou un conseil pour une approche alternative est très apprécié.


C'est en fait très facile. Prenez une image raster sélectionnée copiée ou placée (non liée), puis :

  • Objet > Créer une mosaïque d'objets
    • Ou, dans les anciennes versions d'Illustrator, c'était Filter > Create > Mosaic

    Vos carrés de pixels vectoriels seront encapsulés dans deux groupes, alors dissociez-les deux fois ou double-cliquez deux fois sur le mode d'isolement pour obtenir les carrés individuels (ou les rectangles si votre rapport est désactivé. ).

    Deux exemples :

    Exemple détaillé, avec des ours polaires :

    Sans convertir, voici un moyen rapide de recréer. Je ne crois pas qu'un traçage donnera des résultats adéquats.

    Dessinez un rectangle de la taille de l'image entière.

    Choisissez Objet > Chemin > Diviser en grille.

    Saisissez l'outil Pot de peinture en direct (sous l'outil Shape Builder dans Illustrator CS6)

    Commencez à cliquer sur les sections à remplir.

    (note d'édition : cette réponse a été déplacée vers la question et supprimée de la question d'origine. elle s'adapte simplement mieux ici.)


    Comment convertir un fichier Est en fichier de formes ?

    J'ai besoin d'aide pour convertir un fichier Est (Streets and Trips) en fichier de formes ou en un autre format qu'ARCGIS peut lire. Je n'ai pas pu trouver de chance en utilisant google et mon programme aller Alteryx ne peut pas lire les fichiers Est. Est-ce que n'importe qui a une idée sur la façon dont je peux convertir ce format de données ?

    Convertisseur ITN peut-être ? Je ne l'ai pas utilisé moi-même mais je ne vois pas pourquoi cela ne fonctionnerait pas.

    On dirait qu'il y a un convertisseur EST vers CSV là-bas. Si la sortie CSV a lat/long, vous pouvez ajouter à ArcGIS et convertir en fichier de formes d'entités points.

    Avez-vous essayé cela avec d'autres formats de conversion ? Je l'ai testé et ma sortie est vide. Je ne comprends pas ce qui est censé se passer

    Eh bien, malheureusement, c'est un format propriétaire qui n'était utilisé que par le programme Microsoft "streets and trips". Je ne pense pas que quiconque ait des scripts à convertir dans un format plus conventionnel. Une seule question maintenant… Est-ce un binaire ou un alphanumérique ? Essayez de l'ouvrir dans le bloc-notes. Si les informations y sont lisibles, les chiffres et le texte, vous pouvez alors glaner les informations et les convertir en un geojson ou un autre alphanumérique pouvant être chargé dans qgis et Arc. Si c'est binaire. vous n'avez probablement pas de chance. Mais je ne pense pas qu'il y aura jamais de solution simple à cela.


    Comment convertir les données de parcelle en raster ?

    Re postant ceci parce que je pense qu'il a été supprimé, négligé d'ajouter du flair dans le temps, en ajoutant également celle à laquelle la réponse a été publiée.

    J'essaie d'automatiser un modèle LESA pour un comté dans arcmap. Pour ceux d'entre vous qui ne savent pas ce qu'est un modèle LESA, il s'agit en gros d'une analyse d'adéquation des terres agricoles, qui est divisée en plusieurs facteurs qui se combinent pour donner un score global pour chaque zone d'étude évaluée. L'objectif principal de notre modèle est d'évaluer toutes les terres du comté pour l'agriculture, le modèle suivant complétera un plan de protection des terres agricoles plus vaste. Notre modèle est divisé en facteurs basés sur le sol et en facteurs non basés sur le sol. Les facteurs basés sur le sol. les cotes importantes des terres agricoles et de l'indice national de productivité des cultures, étaient faciles car il était simple de les convertir en raster, puis de les reclasser.

    La partie la plus difficile est nos facteurs non liés au sol. En effet, il est basé sur l'emplacement de la zone d'intérêt (dans notre cas, les limites de parcelles individuelles) dans l'espace, par rapport aux autres parcelles. Par exemple, l'un de nos facteurs est la distance aux terres agricoles protégées, nous avons notre couche de parcelles (vecteur), puis la couche de terres protégées (vecteur), j'ai couru la distance euclidienne sur la couche de terres protégées, et maintenant l'objectif est de voir comment la parcelle les limites de couche se rapportent à la sortie de distance euclidienne. Cependant, je ne sais pas comment procéder, car il n'y a pas de champ dans la couche de parcelle pour lequel je puisse la convertir en raster. C'est le problème avec à peu près tous les facteurs non liés au sol, comment pouvons-nous évaluer toutes les différentes parcelles (35000+) les unes par rapport aux autres.

    J'ai lu quelques articles et articles de journaux en essayant quelque chose de similaire, mais ils ne sont pas très approfondis ou différents de nos objectifs pour vraiment aider. Par exemple, cet article ici http://www.esri.com/news/arcuser/1008/lesa1of2.html a évalué les comtés qu'ils étudiaient comme une surface continue et n'a pas utilisé de données parcellaires mais de données d'occupation du sol. Nous avons des données sur l'occupation du sol pour le comté, mais lorsque j'ai essayé d'utiliser l'outil de groupe de régions dans arcmap, il m'a été dit qu'il s'agissait de nombreuses valeurs uniques pour afficher une couleur unique pour chacune d'entre elles.

    Donc, ce que je demande vraiment, c'est si quelqu'un pourrait avoir une solution possible pour nous, un journal ou un autre type de source qui aurait pu faire quelque chose de similaire, ou peut-être une méthode entièrement différente.

    Commentaire d'un message supprimé :

    Je suis sur mobile, donc désolé pour la brièveté et le manque de liens.

    Dans votre exemple, vous n'avez pas besoin de convertir en raster avec l'outil Distance euclidienne : utilisez simplement une jointure spatiale polygone à polygone avec le champ de distance de jointure spécifié.

    Si vous avez besoin d'agréger des statistiques raster pour certains de nos critères non liés au sol, essayez d'utiliser les statistiques zonales comme outil de table. Vous devrez peut-être diviser vos polygones (les zones) en lots, car Spatial Analyst rastérise les zones en interne et peut devenir grincheux s'il doit utiliser des ID entiers 32 bits.

    Si vous devez rechercher des voisins directement adjacents à une parcelle, vous pouvez utiliser l'outil Polygon Neighbors pour générer un tableau décrivant ces contiguïtés.

    Si vous devez rechercher les voisins les plus proches (non adjacents) d'une parcelle, vous pouvez utiliser l'outil Générer une table proche. Je recommande d'utiliser un seuil de distance ou de nombre de voisins, sinon vous aurez une mauvaise mise à l'échelle des performances O (n2) avec de nombreuses parcelles.

    Il existe d'autres techniques pour gérer un très grand nombre de relations entre entités (c'est-à-dire des distances entre des parcelles) dans un nombre arbitraire de dimensions, mais elles nécessiteront une certaine programmation. C'est le nœud des problèmes de recherche de graphes en informatique, où chacune de vos parcelles est un "nœud" et la distance aux autres parcelles est le "poids du bord". moins de bords), alors les outils GP intégrés devraient suffire. Si vous avez besoin de distances par rapport à toutes les parcelles voisines (un graphique plus "dense" avec plus d'arêtes), vous devrez peut-être utiliser le partitionnement de l'espace et d'autres outils plus avancés.

    Je vais répondre point par point :

    J'ai essayé de faire une jointure spatiale entre la sortie de distance euclidienne et la couche de parcelle d'origine, la sortie de distance euclidienne n'apparaît pas dans les menus déroulants. Je suppose qu'il me manque quelque chose ici, pouvez-vous développer un peu plus ?

    Je ne pense pas que les statistiques zonales soient l'outil que je recherche, bien que ce soit un bon outil que je ne connaissais pas. Mon raisonnement étant que je veux savoir à quelle distance se trouve chaque parcelle individuelle de l'une des parcelles recevant une servitude, avec un seuil de 1 mile plus proche d'une parcelle d'une parcelle recevant une servitude, plus son score est élevé. Les statistiques zonales me donnent juste des statistiques descriptives de la couche raster dans la couche de zone (qui serait la couche de parcelles vectorielles dans ce cas) correcte?

    J'ai essayé l'outil de polygones voisins mais il ne m'a donné qu'une des parcelles adjacentes, beaucoup en ont 2 ou 3+

    L'outil Générer près de la table peut être ce que je recherche, cependant, le problème est qu'il ne semble y avoir rien sur quoi baser la jointure entre la table générée et ma couche de parcelle d'origine. La table générée a objected id, infid, nearfid, cependant l'identifiant de l'objet est différent de l'identifiant de l'objet de la couche de parcelle et la couche de parcelle d'origine n'a pas de champ FID. Y a-t-il un moyen de contourner ceci?

    J'ai besoin de distances à la plupart des couches de parcelles car un autre facteur est la distance à une autre exploitation agricole en général (pas seulement celles qui reçoivent une servitude/protégée). Pourriez-vous élaborer sur le partitionnement de l'espace et les outils les plus avancés ?


    12 réponses 12

    Découvrez le package de numérisation pour R. Il est conçu pour résoudre exactement ce genre de problème.

    Logiciel de numérisation de graphiques

    Il existe de nombreuses options différentes, mais toutes utilisent fondamentalement le même flux de travail :

    1. télécharger une image
    2. définir les échelles x et y en indiquant les valeurs en deux points sur chaque axe
    3. indiquer si l'échelle est linéaire, log, etc,
    4. cliquez sur les points.
      • Certains programmes reconnaissent automatiquement les lignes ou les points. Je suis généralement après des points, et je les trouve trop incohérents pour être utiles même avec des centaines de points. Je n'en ai pas trouvé qui reconnaisse différents symboles. Cette fonctionnalité pourrait valoir la peine pour numériser des lignes, mais je n'ai jamais eu à le faire.

    Le programme renvoie chaque point sous la forme d'une matrice x-y.

    Il est souvent utile de sélectionner des points si l'image est agrandie, soit en téléchargeant une version agrandie de l'image, soit en utilisant la fonction de zoom disponible dans certains programmes.

    Il existe de nombreux programmes, et ils varient en termes de fonctionnalités supplémentaires, de convivialité, de licence et de coût. Je les ai listés ci-dessous.

    Tous ceux que j'ai utilisés fonctionnent très bien. Sauf dans les contextes où l'erreur de mesure est très faible, l'erreur de grattage graphique est insignifiante (par exemple, erreur de numérisation << taille des barres d'erreur ou incertitude dans l'estimation). Si vous n'avez pas testé l'exactitude de l'un de ces programmes, mais il serait intéressant de comparer entre les utilisateurs, entre les programmes et contre les résultats des analyses statistiques reproduites.

    Programmes que j'ai utilisé :

      (logiciel gratuit, GPL) reconnaissance automatique de point/ligne. Disponible dans le référentiel Ubuntu (engauge-digitizer) (shareware) a une fenêtre de zoom, reconnaissance automatique de point / ligne (shareware) reconnaissance automatique de point / ligne (open source, le plus extensible après R digitalize) (gratuit, open source), car il simplifie le processus d'obtention des données du graphique dans une analyse en conservant toutes les étapes dans R. Voir le didacticiel dans R-Journal (démo gratuite, 69 $) Plug-in Excel (gratuit, en ligne). Basé sur un navigateur, extrait les données des images. Révisé ici.

    Programmes que je n'ai pas utilisés :

      (Mac, 8 $) (open source - GNU GPL) A une fenêtre de zoom, pas de reconnaissance automatique. Disponible dans le référentiel Ubuntu. Plugin OpenSource (BSD) qui s'exécute sur une plate-forme propriétaire, Matlab

    TLDR : WebPlotDigitizer est disponible sous forme d'application Web ainsi qu'un plugin chrome

    D'autres répondants supposent que vous traitez l'image raster d'un graphique. Mais de nos jours, la bonne pratique consiste à publier des graphiques sous forme vectorielle. Dans ce cas, vous pouvez obtenir une précision beaucoup plus élevée des données récupérées et même estimer l'erreur de récupération si vous travaillez directement avec le code du graphique vectoriel, sans le convertir en image raster.

    Étant donné que les articles sont publiés en ligne sous forme de fichiers PDF, je suppose que vous disposez d'un fichier PDF contenant un tracé vectoriel avec les données que vous souhaitez récupérer (sous forme numérique) et estimez l'erreur de récupération introduite.

    Tout d'abord, le PDF est un format vectoriel qui est essentiellement textuel (peut être lu par un éditeur de texte). Le problème est qu'il peut (et presque toujours) contenir des flux de données compressés qui nécessitent d'être décompressés afin de les lire par un éditeur de texte. Ces flux de données compressés contiennent généralement les informations dont nous avons besoin.

    Il existe plusieurs façons de décompresser des flux de données afin de convertir un fichier PDF en un document texte avec un code PDF lisible. Le moyen le plus simple est probablement d'utiliser l'utilitaire gratuit QPDF avec l'option --stream-data=uncompress :

    D'autres moyens sont décrits ici et ici.

    Le fichier outfile.pdf généré peut être ouvert par un éditeur de texte. Vous avez maintenant besoin du manuel de référence PDF 1.7 pour comprendre ce que vous voyez. Pas de panique en ce moment ! Vous n'avez besoin de connaître que quelques opérateurs décrits dans le "TABLEAU 4.9 Opérateurs de construction de chemin" aux pages 226 - 227. Les opérateurs les plus importants sont (la première colonne contient la spécification des coordonnées d'un opérateur, la seconde contient l'opérateur et la troisième est le nom de l'opérateur ):

    Dans la plupart des cas, il suffit de connaître ces quatre opérateurs pour récupérer les données.

    Vous devez maintenant importer le fichier outfile.pdf sous forme de texte dans un programme où vous pouvez manipuler les données. je vais montrer comment faire avec Mathématique.

    Maintenant, je suppose le cas le plus simple : le graphique contient une ligne qui se compose de nombreux segments à deux points. Dans ce cas, chaque segment de la ligne est codé comme ceci :

    Extraire tous ces segments du code PDF :

    Vous obtenez quelque chose comme ça (le papier avec lequel je travaille contient quatre graphiques):

    Chaque deux segments adjacents partagent un point. Donc, dans ce cas, vous pouvez transformer les séquences de segments adjacents en chemins :

    Vous pouvez maintenant visualiser tous les chemins séparément :

    À partir de cette figure, vous pouvez sélectionner (en double-cliquant) le chemin que vous recherchez, copier la sélection de graphiques et coller en tant que nouveau graphique . Pour le convertir en liste de points, vous prenez l'élément <1, 1, 1>. Maintenant, nous avons les points non pas dans le système de coordonnées du graphique mais dans le système de coordonnées du fichier PDF. Nous devons établir des relations entre eux.

    À partir du tracé ci-dessus, vous sélectionnez les coches à la main (maintenez la touche Maj enfoncée pour une sélection multiple), puis copiez-les et collez-les en tant que nouveaux graphiques . Voici comment extraire les coordonnées des graduations horizontales :

    Vérifiez maintenant les différences entre les coches :

    À partir de ces différences, vous pouvez voir à quel point le positionnement des coches est précis dans le fichier PDF. Il donne une estimation de l'erreur introduite en convertissant les points de données d'origine en graphique vectoriel inclus dans le fichier PDF. S'il y a des erreurs appréciables dans le positionnement des ticks, vous pouvez réduire l'erreur en adaptant les coordonnées des ticks à un modèle linéaire. Cette fonction linéaire peut maintenant être utilisée pour obtenir les coordonnées d'origine des points du chemin (c'est-à-dire dans le système de coordonnées du tracé).


    Cela me semble correct. C'est une approche parfaitement sensée.

    Il y a juste une ligne que je vais critiquer :

    Retirer l'élément zéro est très bien, pas besoin de le changer. D'autres approches idiomatiques seraient name, ext = . , ou une suppression explicite du nom, _ = . .

    Ce que j'ai vraiment faire préconiser la modification est l'identifiant csvfile , car l'extension .csv en a été supprimée. Mieux vaut simplement l'appeler par son nom. Ensuite, une expression comme name + '.csv' peut être clairement vue comme une expression de fichier csv.

    Vous pouvez supprimer l'affectation du fichier json, si vous le souhaitez, et de la même manière rows , en remplaçant chaque référence par l'expression.


    Voir la vidéo: Reclassifying Raster Data (Octobre 2021).