Не уверенный, если что-то существует для такой определенной потребности, но я попробую так или иначе. У меня есть некоторые карты PDF, и я задавался вопросом, существует ли какое-либо СРЕДСТВО ПРОСМОТРА PDF или подобное программное обеспечение, которое позволяет мне измерять расстояния и использовать компас для выяснения заголовков.
Единственная вещь, о которой я могу думать, состоит в том, чтобы импортировать карты в программное обеспечение редактирования изображение и использовать строку, соответствующую масштабу для измерения расстояний, но это было бы очень непрактичным и потенциально трудоемким, и все еще не будет никакого способа для меня измерить заголовки.
Править: screenruler
и kruler
являются, к сожалению, слишком основными, поскольку они испытывают недостаток в транспортирах, а также способности сделать вращения точности.
Что относительно чего-то, что позволило бы мне накладывать, переместитесь и поверните прозрачное изображение моего выбора? Это позволило бы мне создавать или находить свои собственные изображения измерительных инструментов.
EDIT2: Под управлением Ubuntu 18.10 на планшете
Хотя решение ниже должно быстро дать Вам всю информацию, Вы просите, не уверенный, если способ, которым представлена информация, полностью удовлетворит Ваше описание.
Это - отредактированная версия этого ответа, теперь расширенного с помощью нескольких дополнительных вычислений, теперь включая угол к мнимой горизонтальной строке, а также длину линии, которую Вы проводите, в (эквиваленты) пкс:
#!/usr/bin/env python3
import subprocess
import os
import math
home = os.environ["HOME"]
area = home+"/"+".measure_area.txt"
def get_pos():
pos_data = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8")
return [m[2:] for m in pos_data.split()[:2]]
def confirm():
get = subprocess.check_output(["xrandr", "--verbose"]).decode("utf-8").split()
for s in [get[i-1] for i in range(len(get)) if get[i] == "connected"]:
br_data = float(get[get.index("Brightness:")+1])
brightness = lambda br: ["xrandr", "--output", s, "--brightness", br]
flash = ["sleep", "0.1"]
for cmd in [brightness(str(br_data-0.1)), flash, brightness(str(br_data))]:
subprocess.call(cmd)
if not os.path.exists(area):
with open(area, "wt") as measure:
measure.write(str(get_pos()))
confirm()
else:
second = get_pos()
with open(area) as first_m:
try:
first = eval(first_m.read())
w = int(math.fabs(int(second[0]) - int(first[0])))
h = int(math.fabs(int(second[1]) - int(first[1])))
l = str(round(math.sqrt(pow(w, 2) + pow(h, 2))))
arc = math.degrees(math.atan(w/h))
angle = str(round(90-arc))
command = [
'zenity', '--info', '--title', 'Area Size', '--width', '200',
'--text', "rectangle: " + str(w) + 'px x ' + str(h) + "px"
"\nline length: " + l + "px\nangle: " + str(angle) + "°",
]
#---
confirm()
except SyntaxError:
text = "Please try again, there was an error in the data"
command = ['zenity', '--info', '--title', 'Please try again', '--text', text]
subprocess.Popen(command)
os.remove(area)
Сценарий вычисляет угол к мнимой горизонтальной строке, длине и размеру области, между двумя местами указателя мыши.
Это работает, как следует:
Использование сценария xdotool
:
sudo apt-get install xdotool
Скопируйте сценарий ниже в пустой файл, сохраните его в ~/bin
(необходимо будет, вероятно, создать каталог), как measure_area
(никакое расширение), и делают это исполняемым файлом.
Добавьте сочетание клавиш по Вашему выбору для запущения скрипта: Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:
measure_area
Предположение, что картой PDF, которую Вы имеете, является геопространственный PDF, можно использовать Adobe Acrobat и встроенные аналитические инструменты, или можно использовать мобильное приложение Карт Avenza по телефону или планшету.