Coordenadas de puntos en pantalla

Ok, tengo una imagen de un mapa con pequeños puntos para cada ciudad en el mapa, y quiero encontrar las coordenadas de cada punto. La única forma en que se me ocurrió fue usar el panel de "información" en Photoshop y pasar el mouse sobre cada punto, luego alt + tabulador en un archivo de texto y escribir las coordenadas y luego volver a los puntos, haciendo eso una y otra vez. encima.

Y eso es bastante aburrido y requiere mucho tiempo, así que me preguntaba si había otra forma. En realidad no me importa si tengo que borrar el mapa y separar los puntos para hacerlo, solo necesito los nombres de las ciudades y sus coordenadas en píxeles.

¿Hay una forma no aburrida de hacer esto?

ingrese la descripción de la imagen aquí

Sería (mucho mucho) más fácil si tuviera una versión vectorial del mapa y utilizara Illustrator. (no necesitaría seleccionar y hacer clic en nada en absoluto) Ahora necesita hacer clic y escribir nombres.

Respuestas (1)

Hacer esto:

  1. Seleccione los puntos negros con Seleccionar → Gama de colores... . Elija cualquier punto en un punto y use una gran borrosidad de, digamos, 103. No se preocupe si el texto se selecciona, nos ocuparemos de eso a continuación.

  2. Reduzca la selección en 3 píxeles, elija Seleccionar → Modificar → Contraer... , contraiga en 3 puntos (en esta imagen).

  3. Con la herramienta de selección activa, haga clic derecho en el lienzo y elija Crear ruta de trabajo , use una configuración de 0.5

  4. Ejecute el siguiente script, elija un nombre de archivo para poner los datos:

        #target photoshop
    
        main();
    
        function main() {
            var layers = app.activeDocument.pathItems[0];
            var file = File.saveDialog('save marker info', 'markerinfo:*.txt');
            file.open('w');
            handleSubpaths(layers, file);
            file.close();
        }
    
    
        function handleSubpaths(path, file){
            var numLayers = path.subPathItems.length;
            file.write("name, position x, position y\n"  );
            for (var j = 0; j < numLayers; j++) {
               var subpath = path.subPathItems[j];
               var pos = average(subpath.pathPoints);
               file.write(
                          "marker_"+ (j+1) +", " + 
                          pos[0] + ", "+
                          pos[1] + "\n"
                         );
            }
        }
    
    
        function average(points){
            ret = [0,0]
            for (var i = 0; i < points.length; i++){
               var p = points[i].anchor;
               ret[0] += p[0]/points.length;
               ret[1] += p[1]/points.length;
            } 
            return ret;
        }
    
  5. Lea los datos del archivo de texto o use una hoja de cálculo. Extracto del resultado del formulario:

    name, position x, position y
    marker_1, 388.75, 137.5
    marker_2, 509.5, 180.25
    marker_3, 792.25, 179.5
    marker_4, 403.75, 183.5
    ....
    

Hecho. De todos modos, si puede encontrar una versión vectorial de la imagen y usar Illustrator, también podría raspar automáticamente los nombres.

esta es una buena solución, excepto que no sabemos dónde está "marker_n" en el archivo de Photoshop. ... es posible usar Count Toolel cual puedo marcar todos los puntos con la secuencia que quiero. y luego extraer el contenido a un archivo txt?
@hsawires Estaba tratando de hacer esto con el conteo primero, pero esto fue más rápido de reutilizar. Para mí fue sorprendente que el registro de medición no tome posición para las selecciones y cuentas parece un descuido. De todos modos, puedo convertirlos en capas de texto, posicionadas en el punto, así que todo lo que necesitas es escribir los nombres.
@hsawires también, como dije, si esto hubiera sido vectores e ilustrador, podría haber raspado los nombres de la misma manera.