不确定是否存在满足这种特定需求的东西,但我还是会尝试。我有一些 PDF 地图,我想知道是否有任何 PDF 查看器或类似的软件可以让我测量距离并使用指南针确定方向。
我唯一能想到的办法就是将地图导入图像编辑软件,然后使用与比例相匹配的线来测量距离,但这非常不切实际,而且可能会耗费时间,而且我仍然无法测量航向。
编辑:不幸的是screenruler
它们kruler
太基础了,因为它们缺少量角器,以及进行精确旋转的能力。
那有没有可以让我叠加、移动和旋转我选择的透明图像的东西呢?这样我就可以创建或找到自己的测量工具图像。
EDIT2:在平板电脑上运行 Ubuntu 18.10
答案1
获取屏幕上的几何信息
虽然下面的解决方案应该可以快速为您提供您所要求的所有信息,但不确定信息呈现的方式是否能完全满足您的描述。
这是这个答案,现在扩展了一些额外的计算,现在包括与假想水平线的角度,以及绘制的线的长度(以 px 为单位):
剧本
#!/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)
怎么运行的
该脚本计算鼠标指针两个位置之间的假想水平线的角度、长度和面积大小。
其工作原理如下:
- 将鼠标指针放在第一个位置(不单击)
- 按下您选择的组合键(见下文)
- 将鼠标放在第二个位置(同样不单击)
- 再次按下组合键。Zenity 窗口将显示如上图所示的结果。
如何设置
该脚本使用
xdotool
:sudo apt-get install xdotool
将下面的脚本复制到一个空文件中,并将其保存为
~/bin
(您可能需要创建目录)measure_area
(无扩展名)并使其可执行。添加您选择的组合键来运行脚本:选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”。单击“+”并添加命令:
measure_area
笔记
- 您必须先注销/登录
- 你把谁当第一/第二并不重要;剧本衡量绝对值。
答案2
假设您拥有的 PDF 地图是地理空间 PDF,您可以使用 Adobe Acrobat 和内置分析工具,也可以使用手机或平板电脑上的 Avenza Maps 移动应用程序。