sass语法

分类:Web前端, 发布于 2021-06-05 10:18:25  浏览(181)

1 @import 指令可以让我们导入其他文件等内容。

2 包含文件时不需要指定文件后缀,Sass 会自动添加后缀 .scss

3 如果你不希望将一个 Sass 的代码文件编译到一个 CSS 文件,你可以在文件名的开头添加一个下4 划线。这将告诉 Sass 不要将其编译到 CSS 文件

5 如果要导入该文件,则不需要使用下划线

6 注意:请不要将带下划线与不带下划线的同名文件放置在同一个目录下,比如,_colors.scss 和 colors.scss 不能同时存在于同一个目录下,否则带下划线的文件将会被忽略。

7 @mixin 指令允许我们定义一个可以在整个样式表中重复使用的样式。

8 @extend 指令告诉 Sass 一个选择器的样式从另一选择器继承。

9 Sass 支持标准的 CSS 多行注释 /* */,以及单行注释 //,前者会 被完整输出到编译后的 CSS 文件中,而后者则不会

10 将局部变量转换为全局变量可以添加 !global 声明:

#main {
  $width: 5em !global;
  width: $width;
}
#sidebar {
  width: $width;
}

11 SassScript 支持 6 种主要的数据类型:

数字,1, 2, 13, 10px

字符串,有引号字符串与无引号字符串,"foo", 'bar', baz

颜色,blue, #04a3f9, rgba(255,0,0,0.5)

布尔型,true, false

空值,null

数组 (list),用空格或逗号作分隔符,1.5em 1em 0 2em, Helvetica, Arial, sans-serif

maps, 相当于 JavaScript 的 object,(key1: value1, key2: value2)


12 SassScript 支持数字的加减乘除、取整等运算 (+, -, *, /, %),如果必要会在不同单位间转换值。

关系运算 <, >, <=, >= 也可用于数字运算,相等运算 ==, != 可用于所有数据类型。

+ 可用于连接字符串

p {

  cursor: e + -resize;

}

编译为

p { cursor: e-resize; }

13 通过 #{} 插值语句可以在选择器或属性名中使用变量:

$name: foo;
$attr: border;
p.#{$name} {
  #{$attr}-color: blue;
}

编译为

p.foo {
  border-color: blue; }


Ubuntu20.04修改时区

分类:Linux, 发布于 2021-04-26 15:40:53  浏览(187)

一、命令设置

sudo tzselect
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

用timedatectl查看下发现时区已经更改


Faker生成各种数据

分类:Python, 发布于 2021-04-22 10:19:53  浏览(199)

Faker faker = new Faker();

faker.name().fullName();    // Gordon Lemke

faker.address().streetAddress();    // 3980 Isaiah Square


// 生成中文类数据

faker = new Faker(new Locale("zh-CN"));

faker.name().fullName();    // 胡靖琪

faker.address().streetAddress();    // 赖巷43213号

python版API

下面是python版的API列表


#!/usr/bin/env python3

# -*- coding: utf-8 -*-


from random import randint

from collections import OrderedDict

from datetime import datetime, date

from faker import Faker

from faker.providers import BaseProvider, internet     


# -----------  faker.providers.BaseProvider -----------

fake = Faker();

# 格式化输出 数字+字符 0-9

fake.bothify(letters='ABCDE'    #93 AA

fake.bothify(text='Product Number: ????-########')    #aGEt-22666920

fake.bothify(text='Product Number: ????-########', letters='ABCDE')    #VDECE-73691847

# 格式化输出 字符

fake.lexify(text='Random Identifier: ??????????')  # Random Identifier: HsoUenwndr

fake.lexify(text='Random Identifier: ??????????', letters='ABCDE')   # Random Identifier: AECDBBECEB

# 格式化输出 数字     #0-9 %1-9 !0-9空格 @1-9空格

fake.numerify(text='Intel Core i%-%%##K vs AMD Ryzen % %%##X')   # Intel Core i4-6966K vs AMD Ryzen 7 1612X

# 格式化输出16进制数

fake.hexify(text='MAC Address: ^^:^^:^^:^^:^^:^^')   # MAC Address: a9:c4:39:79:ba:4c

fake.hexify(text='MAC Address: ^^:^^:^^:^^:^^:^^', upper=True)   # MAC Address: DC:CC:19:2C:4F:A1


# 组成随机列表

fake.random_choices(elements=('a', 'b', 'c', 'd'))  # ['a', 'd', 'b', 'b']

fake.random_choices(elements=('a', 'b', 'c', 'd'), length=3) # ['c', 'd', 'd']

# 出现概率

fake.random_choices(elements=OrderedDict([("a", 0.45), ("b", 0.35), ("c", 0.15), ("d", 0.05), ]))    

# 随机列表, 不重复

fake.random_sample(elements=('a', 'b', 'c', 'd', 'e', 'f'), length=3)

# 随机元素

fake.random_element(elements=('a', 'b', 'c', 'd'))   # d

fake.random_element(elements=OrderedDict([("a", 0.45), ("b", 0.35), ("c", 0.15), ("d", 0.05), ]))    # 有概率

# 随机元素不重复

fake.random_elements(elements=('a', 'b', 'c', 'd'), unique=True) #['b', 'a', 'c']

fake.random_elements(elements=OrderedDict([("a", 0.45), ("b", 0.35), ("c", 0.15), ("d", 0.05), ]), length=2, unique=True)


# 随机数字

fake.random_int()    # 1127

fake.random_int(min=100, max=200) # 191

fake.random_int(min=0, max=15, step=3) # 6

# 指定长度的数字

fake.random_number()    # 长度随机 435701

fake.random_number(digits=3)    # 长度固定  785

# 指定范围数字

fake.randomize_nb_elements(number=100)   # 默认 60% - 140% 139

fake.randomize_nb_elements(number=100, le=True)  # 60% - 100% 

fake.randomize_nb_elements(number=100, ge=True)  # 100% -140%

fake.randomize_nb_elements(number=100, le=True, max=80)  # 60% - max

fake.randomize_nb_elements(number=100, ge=True, min=120) # min - 140%


# 1位随机数  0-9

fake.random_digit() # 3

# 1位随机数  1-9

fake.random_digit_not_null() # 4

# 1位随机数或空格  1-9

fake.random_digit_not_null_or_empty() # 8

# 1位随机数或空格  0-9

fake.random_digit_or_empty() # 9


# 随机字母 a-z A-Z

fake.random_letter()  # a

# 随机小写字母

fake.random_lowercase_letter()   # i

# 随机大写字母

fake.random_uppercase_letter()   # D

# 随机字母列表

fake.random_letters()   # ['G', 'B', 'O', 'p', 'V', 'Q', 'F', 'P', 'n', 'H', 'c', 'N', 'r', 'r', 'h', 'A']

fake.random_letters(length=6)    # ['A', 'E', 'W', 'Q', 'r', 'A']


# 语言代码

fake.language_code()  # uk

# 地区代码

fake.locale()    # zh_HK


# fake.add_provider(internet)    

fake.ipv4_private()


# -----------  faker.providers.address.Provider -----------

fake = Faker("zh_CN"

# 随机地址

fake.address()   # 四川省柳州市沈河林街w座 521082

# 随机楼号

fake.building_number()

# 随机城市

fake.city()  # 宁德市

# 随机行政单位  市县

fake.city_suffix()   # 市

# 随机国家

fake.country()   # 塔吉克斯坦

# 随机国家代码

fake.country_code() # MG

# 随机邮编

fake.postcode()  # 406008

# 随机街道地址

fake.street_address()    # 常街O座

# 随机路名

fake.street_name()   # 宜都路

# 街道后缀

fake.street_suffix() # 路


# -----------  faker.providers.color.Provider -----------

# HSV

# 随机某个色系颜色  monochrome灰度  red orange yellow green blue purple pink

fake.color(hue='monochrome')    # #a80a14

# 随机亮色

fake.color(luminosity='light')   # #86b3ef

# 颜色格式 hex rgb hsv hsl

fake.color(hue=(100, 200), color_format='rgb')   # rgb(176, 227, 244)

fake.color(hue=135, luminosity='dark', color_format='hsv')   # hsv(135, 95, 46)

fake.color(hue=(300, 20), luminosity='random', color_format='hsl')   # hsl(195, 16, 2

# 随机颜色名称

fake.color_name()    # MediumOrchid

# 随机16进制颜色

fake.hex_color()     # #a65ad6

# 随机rgb颜色

fake.rgb_color()     # 27,14,255

# 随机css格式rgb颜色

fake.rgb_css_color()     # rgb(59,208,119

# 随机安全色名称

fake.safe_color_name()   # fuchsia

fake.safe_hex_color()    # #668800


# -----------  faker.providers.company.Provider -----------

# 随机公司名称

fake.company()   # 华远软件科技有限公司

# 随机信用卡过期时间

fake.credit_card_expire()    # 03/21

# 完整信用卡

fake.credit_card_full()      # American Express\n博 王\n344778599396849 07/28\nCID: 3995

# 信用卡号

fake.credit_card_number()    # 6011562560356696

# 随机 am pm

fake.am_pm()     # AM

# 随机日期  19700101 - 今天

fake.date()      # 2010-12-19

# 随机日期 30年前 - 今天

fake.date_between()  # 1993-05-06

# 随机日期 1年前 - 今天

fake.date_between(start_date='-1y', end_date='today')    # 2020-02-11

# 两个时间中的某个时间  Date / Datetime

fake.date_between_dates(date_start=date(2018, 1, 1))  # 2020-05-03

fake.date_between_dates(date(2010, 1, 1), date(2015, 1, 1))  # 2013-01-06

# 某个随机年龄对应的日期

fake.date_of_birth(minimum_age=18, maximum_age=30)   # 2001-10-23

# 这个月的某个日期

fake.date_this_month()

fake.date_this_month(before_today=True, after_today=True)

# 今年的某个日期

fake.date_this_year()

fake.date_this_year(before_today=True, after_today=False)

# 时间 10101 - 现在

fake.date_time_between() # 2009-11-07 04:47:17

fake.date_time_between(start_date='-1y', end_date='now') # 2020-08-31 05:38:55

# 某个范围内的时间

fake.date_time_between_dates()

fake.date_time_between_dates(datetime(2013, 2, 8, 15, 53, 19), datetime(2016, 6, 1, 23, 33, 57))

# 一个月中的某天

fake.day_of_month()  # 18

# 某个月

fake.month()  # 09

# 某年

fake.year()  # 2006

# 某个月份名

fake.month()  # August

# 周几

fake.day_of_week()   # Tuesday

# 未来某天

fake.future_date()       # 2020-09-25

fake.future_date(end_date='+3d')     # 2020-09-05

fake.future_datetime(end_date='+3d')     # 2020-09-04 15:45:59

# 过去某天

fake.past_date()     

fake.past_date(start_date='-3d')

fake.past_datetime(start_date='-3d')

# 随机时区

fake.timezone()  # Europe/Bucharest

# 随机时间戳

fake.unix_time()

fake.unix_time(start_datetime=datetime(2020,1,1))


# -----------  faker.providers.file.Provider -----------

# 文件后缀

fake.file_extension()       # pptx

# 文件名

fake.file_name()     # 价格.mp3

# 指定文件类型   category: audio|image|office|text|video

fake.file_name(category='image', extension='jpeg')   # 起来.jpeg

# 文件路径

fake.file_path()     # /增加/那个.html

fake.file_path(depth=3, category='image', extension='jpeg')  # /什么/人员/详细/欢迎.jpeg

# 网络传输文件类型

fake.mime_type()     # application/xhtml+xml

# category – application|audio|image|message|model|multipart|text|video

fake.mime_type(category='image')     # image/png


# -----------  faker.providers.company.Provider -----------

fake.coordinate()    # 113.507229

# 纬度

fake.latitude()     # -76.139686

# 经度

fake.longitude()     # 7.562154

# 纬度 + 经度

fake.latlng()    # (Decimal('14.9397975'), Decimal('-38.213072')

# 城市坐标

fake.local_latlng()  #('39.33427', '-76.43941', 'Middle River', 'US', 'America/New_York')

fake.local_latlng(country_code='CN') # ('30.24706', '115.04814', 'Huangshi', 'CN', 'Asia/Shanghai'

# 陆地坐标

fake.location_on_land()  # ('41.6764', '-91.58045', 'Coralville', 'US', 'America/Chicago'


# -----------  faker.providers.internet.Provider -----------

# 公司邮箱

fake.company_email()     # luojie@junyong.cn

fake.ascii_company_email()   # ihou@gangwang.cn

# 邮箱

fake.email()     # rxiao@hotmail.com

fake.free_email()     # xiashao@gmail.com

fake.ascii_email()   # ysu@hotmail.com

fake.safe_email()     # vchang@example.org

fake.ascii_free_email()  # jing12@yahoo.com

fake.ascii_safe_email()  # chao59@example.net


# 域名

fake.domain_name()   # xiuyingping.cn

fake.domain_name(levels=2)   # junjing.61.net

fake.safe_domain_name()   # example.org

fake.free_email_domain()   # yahoo.com

fake.hostname()   # laptop-53.min.cn

fake.hostname(levels=2)   # srv-04.22.sx.cn

# 顶级域名

fake.tld()   # com


# http方法

fake.http_method()   # DELETE


# 图片链接

fake.image_url()     # https://dummyimage.com/865x559

fake.image_url(width=640, height=480)    # https://www.lorempixel.com/640/480


# ip地址

fake.ipv4()  # 111.229.96.116

fake.ipv4(network=False, address_class='a', private=True)    # 10.158.89.21

fake.ipv4_private()  # 192.168.181.245

fake.ipv4_public()   # 159.233.210.51

fake.ipv6()  # cf97:ce3f:1575:abf3:735:84d0:2d59:db22

# mac地址

fake.mac_address()   # c6:d2:bb:f8:41:99

# 端口号

fake.port_number()   # 3588

fake.port_number(is_system=False, is_user=True, is_dynamic=False)   # 3588

# url地址

fake.url()   # http://yang.cn/

fake.uri()   # https://www.leitao.cn/tags/tag/app/register/

# url路径

fake.uri_path(deep=3)    # posts/categories/categories


# 用户名

fake.user_name() # xiuying06

# 密码

fake.password()  # 630Td#lM%P

fake.password(length=10, special_chars=False, digits=True, upper_case=True, lower_case=True)  # H0ZAAvnq02


# -----------  faker.providers.lorem.Provider -----------

# 一段文本

fake.paragraph() # 相关设计工具提高你们.结果建设两个浏览.

fake.paragraph(nb_sentences=10, variable_nb_sentences=True, ext_word_list=None)

# 多段文本列表

fake.paragraphs()

fake.paragraphs(nb=10, ext_word_list=None)

# 一句话

fake.sentence()

fake.sentence(nb_words=10, variable_nb_words=True, ext_word_list=None)

# 几句话列表

fake.sentences()

fake.sentences(nb=10, ext_word_list=None)

# 文本

fake.text()

fake.text(max_nb_chars=100, ext_word_list=None))

fake.texts()

fake.texts(nb_texts=10, max_nb_chars=200, ext_word_list=None)

# 单词

fake.word()

fake.words(nb=10, ext_word_list=None, unique=False)


# -----------  faker.providers.misc.Provider -----------

# boolean 

fake.boolean()   # True

fake.boolean(chance_of_getting_true=25)  # False


# json [(字段名, 方法名, {方法参数})]

fake.json(data_columns=[('id', 'pyint', {'max_value':20})], num_rows=3)  # [{"id": 3}, {"id": 19}, {"id": 9}]

# {"id": 156, "details": {"name": "min20@yangyuan.cn"}}

fake.json(data_columns=[('id', 'pyint'), ('details', (('name', 'email'), ))], num_rows=1)

# {"id": 6692, "details": ["\u9a6c\u5e06", "\u5510\u6d9b"]}

fake.json(data_columns=[('id', 'pyint'), ('details', [(None, 'user_name'), (None, 'user_name')])], num_rows=1)



# md5

fake.md5()   # 2f265a4ae94544ef1412c9983c0af282

fake.md5(raw_output=True)   # 二进制  b'\n\x8e\x06\xa2\xe0\xbczS,\xd4j\xb9k0\r.'

# sha1

fake.sha1()  # 544667252ceb900d85034313571c45ec4ee50dca

fake.sha256()  # 49c96b62cc664fc26eec3e7e412c0a214130acfa41d37b57bfe7eccf5c519581

# uuid

fake.uuid4()     # b0b03cfb-420d-4bc8-a74f-0e2849b19e97


# 压缩文件

fake.tar(uncompressed_size=256, num_files=4, min_file_size=32))

fake.zip(uncompressed_size=256, num_files=4, min_file_size=32)

# 指定压缩格式   deflate|gzip|gz  bzip2|bz2  lzma|xz

fake.zip(uncompressed_size=256, num_files=32, min_file_size=4, compression='bz2') 


# -----------  faker.providers.person.Provider -----------

# 名字

fake.name()  # 蔡淑英

# 女性名字

fake.name_female()  # 刘倩

# 男性名字

fake.name_male()  # 贺建军

# 姓

fake.last_name()     # 朱

# 名

fake.first_name()    # 斌

# 女性名字

fake.first_name_female()     # 秀兰

# 男性名字

fake.first_name_male()     # 文


# -----------  faker.providers.phone_number.Provider -----------

# 国家号码前缀

fake.country_calling_code()  # +86

# 电话号码

fake.phone_number()  # 18578143124


# -----------  faker.providers.profile.Provider -----------

# 个人信息

# {'job': '市场/营销', 'company': '昂歌信息信息有限公司', 'ssn': '63220019390724127X', 

# 'residence': '重庆市超市丰都翟街p座 693155', 'current_location': (Decimal('33.961661'),

# Decimal('-177.155429')), 'blood_group': 'B-', 'website': ['http://www.chaogao.cn/'],

# 'username': 'guiyingyao', 'name': '岳兰英', 'sex': 'F', 'address': '吉林省成都市沙湾何路m座 517600', 

# 'mail': 'limo@yahoo.com', 'birthdate': datetime.date(2013, 4, 10)}

fake.profile()

# {'username': 'nliu', 'name': '李燕', 'sex': 'F', 'address': '广西壮族自治区慧县萧山罗路m座 976267', 

# 'mail': 'gang71@gmail.com', 'birthdate': datetime.date(2009, 5, 5)}

fake.simple_profile()


# -----------  faker.providers.python.Provider -----------

fake.pybool()        # False

fake.pydecimal()     # Decimal('97.4104')

fake.pydict()

fake.pyfloat()   # 97.4104

fake.pyfloat(left_digits=None, right_digits=None, positive=False, min_value=None, max_value=None)

fake.pyint()     # 6890

fake.pyint(min_value=0, max_value=9999, step=1)

fake.pyiterable()

fake.pylist()

fake.pyset()

fake.pystr()

fake.pystr_format()

fake.pystruct()

fake.pytuple()



# 多语种

fake = Faker(['zh_CN', 'en_US'])

for _ in range(5):

    fake.name()


# 自定义数据

fake = Faker()

class MyProvider(BaseProvider):

    def province(self):

        provinces = ["北京市", "天津市", "河北省", "内蒙古", "山西省", "辽宁省",

         "吉林省", "黑龙江省", "上海市", "江苏省", "山东省", "安徽省", "福建省", 

         "浙江省", "江西省", "广东省", "广西", "海南省", "重庆市", "四川省", 

         "云南省", "贵州省", "西藏", "河南省", "湖北省", "湖南省", "陕西省", 

         "青海省", "宁夏", "新疆", "甘肃省", "香港", "澳门", "台湾"]

        return provinces[randint(0, len(provinces) - 1)]

fake.add_provider(MyProvider)

fake.province()


PEP8下划线建议

分类:Python, 发布于 2021-04-15 14:56:45  浏览(217)

1 前置单下划线_var:

命名约定,用来表示该名称仅在内部使用。 一般对Python解释器没有特殊含义(通配符导入除外),只能作为 对程序员的提示。

2 后置单下划线var_:

命名约定,用于避免与Python关键字发生命名 冲突。 前置双下划线__var:在类环境中使用时会触发名称改写,对 Python解释器有特殊含义。

3 前后双下划线__var__:

表示由Python语言定义的特殊方法。在自 定义的属性中要避免使用这种命名方式。

4 单下划线_:

有时用作临时或无意义变量的名称(“不关心”)。此 外还能表示Python REPL会话中上一个表达式的结果。

GPS NMEA-0183标准详解

分类:其他, 发布于 2021-04-13 22:48:45  浏览(238)

NMEA - 0183 是美国国家海洋电子协会(National Marine Electronics Association)为海用电子设备制定的标准格式。目前业已成了 GPS/北斗导航设备统一的 RTCM(Radio Technical Commission for Maritime services)标准协议。

统一标准格式NMEA-0183输出采用ASCII 码,其串行通信的参数为:波特率=4800bps,数据位=8bit,开始位=1bit,停止位=1bit,无奇偶校验。

数据传输以“语句”的方式进行,每个语句均以“$”开头,然后是两个字母的“识别符”和三个字母的“语句名”,接着就是以逗号分割的数据体,语句末尾为校验和,整条语句以回车换行符结束。

 NMEA-0183的数据信息有十几种,这些信息的作用分别是:$GPGGA:输出GPS的定位信息;$GPGLL:输出大地坐标信息;$GPZDA:输出UTC时间信息;$GPGSV:输出可见的卫星信息;$GPGST:输出定位标准差信息;$GPGSA:输出卫星DOP值信息;

 $GPALM:输出卫星星历信息;$GPRMC:输出GPS推荐的最短数据信息等。

 

一、 输出语句说明:

1,$GPRMC语句

(Recommended Minimum Specific GPS/TRANSIT Data-RMC,推荐定位信息1次/1秒)

    对于一般的GPS动态定位应用,GPRMC语句完全满足要求。该语句中包括经纬度、速度、时间和磁偏角等字段,这些数据为导航定位应用提供了充分的信息。下表详细说明GPRMC语句中的各个字段:

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,,<12>

字段 $GPRMC语句意义——取值范围

<1> UTC时间:hhmmss.ss——000000.00~235959.99

<2> 状态,有效性 ——A表示有效;V表示无效

<3> 纬度格式:ddmm.mmmm——0000.00000~8959.9999 (标准的度分格式)

<4> 南北半球——N北纬;S南纬

<5> 经度格式:dddmm.mmmm——00000.0000~17959.9999 (标准的度分格式)

<6> 东西半球——E表示东经;W表示西经

<7> 地面速度——000.00~999.999

<8> 速度方向——000.00~359.99

<9> 日期格式,月日年——010100~123199

<10> 磁偏角,单位:度——00.00~99.99

磁偏角方向——E表示东;W表示西

<12> 模式指示及校验和—— A=自主定位,D=差分,E=估算,N=数据无效

例如:$GPRMC,074529.82,A,2429.6717,N,11804.6973,E,12.623,32.122,010806,,W,A*08

 

2,$GPGGA语句

(Global Positioning System Fix Data-GGA,GPS定位信息, 输出1次/1秒)

    GPS定位主要数据,该语句中包括经纬度、质量因子、HDOP、高程、基准站号等字段。下表详细说明GPGGA语句中的各个字段:

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,,<12>,,<14>

字段 $GPGGA语句意义——取值范围

<1> UTC时间:hhmmss.ss——000000.00~235959.99

<2> 纬度,格式:ddmm.mmmm ——0000.00000~8959.9999 (标准的度分格式)

<3> 南北半球——N北纬;S南纬

<4> 经度格式:dddmm.mmmm ——00000.0000~17959.9999 (标准的度分格式)

<5> 东西半球——E表示东经;W表示西经

<6> 质量因子——0=未定位,1=GPS单点定位固定解,2=差分定位,3=PPS解;4=RTK固定解;5=RTK浮点解;6=估计值;7=手工输入模式;8=模拟模式;

<7> 应用解算位置的卫星数——00~12

<8> HDOP,水平图形强度因子——0.500~99.000 ;大于6不可用

<9> 天线高程(海平面)——-9999.9~99999.9

<10> 线线高程单位(m) ——m

大地水准面起伏——地球椭球面相对大地水准面的高度

<12> 大地水准面起伏单位(m)   ——m

<13> 差分GPS数据期——差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空),不使用DGPS时为空

<14> 基准站号——0000~1023;不使用DGPS时为空

$GPGGA,074529.82,2429.6717,N,11804.6973,E,1,8,1.098,42.110,M,,M,,*76

 

3,$GPGSV语句

(GPS Satellites in View-GSV,可见卫星信息,1次/5秒)

    GPS可见星的方位角、俯仰角、信噪比等每条语句最多包括四颗卫星的信息,每颗卫星的信息有四个数据项,即:(4)-卫星号,(5)-仰角,(6)-方位角,(7)-信噪比

$GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>,<13>,<14>,<15>,<16>,<17>,<18>,<19>

字段 $GPGSV语句意义——取值范围

<1> 总的GSV语句电文数——0~12

<2> 当前GSV语句号

<3> 可视卫星总数——0~32

<4> 卫星号——1~32

<5> 仰角——00~90

<6> 方位角——000~359

<7> 信噪比——00~99dB无表未接收到讯号

<8> 卫星号——1~32

<9> 仰角——00~90

<10> 方位角——000~359

信噪比——00~99dB无表未接收到讯号

<12> 卫星号——1~32

<13> 仰角——00~90

<14> 方位角——000~359

<15> 信噪比——00~99dB 无表示未接收到讯号

<16> 卫星号——1~32

<17> 仰角——00~90

<18> 方位角——000~359

<19> 效验和,格式:*效验和——检查位

$GPGSV,3,1,11,1,83,54,32,3,19,192,28,6,26,57,36,7,51,140,37*7D

$GPGSV,3,2,11,14,40,136,34,16,64,266,36,20,21,293,,22,2,168,*4C

$GPGSV,3,3,11,23,10,321,,25,53,7,40,30,2,46,*48

 

4,$GPVTG语句

(Track Made Good and Ground Speed-VTG,地面速度信息)

格式:$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh

字段 $GPVTG语句意义——取值范围

<1> 以真北为参考基准的地面航向——000.000~359.999

<2> 以磁北为参考基准的地面航向——000.000~359.999

<3> 地面速率——000.000~999.999节

<4> 地面速率——0000.0~1851.8公里/小时

<5> 模式指示——A=自主定位,D=差分,E=估算,N=数据无效(仅NMEA0183 3.00版本输出)

<6> hh 校检位

$GPVTG,257.314,T,257.314,M,10.739,N,19.888,K,A*2F

 

5,$GPGSA语句

(GPS DOP and Active Satellites-GSA,当前卫星信息,1次/1秒)

    GSA : GNSS 的当前卫星和精度因子,包括可见卫星PRN号,以及PDOP、HDOP、VDOP。如:

<1>     模式 ——M = 手动, A = 自动。

<2>     定位类型——1 = 未定位, 2 = 二维定位, 3 = 三维定位。

<3>     PRN 数字——01 至 32 表天空使用中的卫星编号,最多可接收12颗卫星信息。正在用于解算位置的卫星号(01~32,前面的0也将被传输)。

<4>     PDOP位置精度因子——0.5~99.9  

<5>     HDOP水平精度因子——0.5~99.9

<6>     VDOP垂直精度因子——0.5~99.9

<7>     Checksum.(检查位).

$GPGSA,<1>,<2>,<3>,<3>,,,,,<3>,<3>,<3>,<4>,<5>,<6>,<7>

$GPGSA,A,3,19,11,03,23,27,13,16,,,,,,3.43,1.67,2.99*0E

 

6,$GPGLL语句

(输出大地坐标信息)

$GPGLL,<1>,<2>,<3>,<4>,<5>,<6>,<7>*61

字段 $GPGLL语句意义——取值范围

<1> 纬度:ddmm.mmmmm——0000.00000~8959.9999

<2> 南纬或北纬——北纬N,S南纬

<3> 经度:dddmm.mmmmm——0000.00000~17959.99999

<4> 东、西经 ——东经E,西经W

<5> UTC时间——hh:mm:ss

<6> 数据状态——A有效,V无效

$GPGLL,2431.25310,N,11806.15429,E,081401.00,A,A*61

 

7,$GPZDA 语句

(输出UTC时间和日期信息)

$GPZDA, <1>,<2>,<3>,<4>,<5>*hh

字段 $GPZDA语句意义——取值范围

<1> 时间:hhmmss.ss——0000000.00~235959.99

<2> 日——00~31

<3> 月——00~12

<4> 年——0000~9999

<5> 地方时与世界时之差

<6> 检校位 *hh——*

$GPZDA,081401.00,14,09,2006,00,00*62

 

8,$GPGST 语句

(GPS 伪距噪声统计,包括了三维坐标的标准偏差信息)

字段——示例——说明

Sentence ID ——$GPGST

UTC Time——024603.00——UTC time of associated GGA fix

RMS deviation——3.2——Total RMS standard deviation of ranges inputs to the navigation solution

Semi-major deviation——6.6——Standard deviation (meters) of semi-major axis of error ellipse

Semi-minor deviation——4.7——Standard deviation (meters) of semi-minor axis of error ellipse

Semi-major orientation——47.3——Orientation of semi-major axis of error ellipse (true north degrees)

Latitude error deviation——5.8——Standard deviation (meters) of latitude error

Longitude error deviation——5.6——Standard deviation (meters) of longitude error

Altitude error deviation——22.0——Standard deviation (meters) of latitude error

Checksum—— *58

$GPGST,024603.00,3.2,6.6,4.7,47.3,5.8,5.6,22.0*58

 

9,$GPCN0语句

   各颗用于解算的卫星信噪比:

$GPCN0,30,40,35,26,24,36,31,38

 

二、 输出时间说明

 GPGGA(1次/1秒)

 GPGSA(1次/1秒)

 GPGSV(1次/5秒)

 GPRMC(1次/1秒)

 另可选用GLL,VTG或SiRF二进制格式.

 

三、坐标系统WGS84

WGS-84坐标系(World Geodetic System)是一种国际上采用的地心坐标系。坐标原点为地球质心,其地心空间直角坐标系的Z轴指向国际时间局(BIH)1984.0定义的协议地极(CTP)方向,X轴指向BIH1984.0的协议子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系,称为1984年世界大地坐标系。这是一个国际协议地球参考系统(ITRS),是目前国际上统一采用的大地坐标系。GPS广播星历是以WGS-84坐标系为根据的。

WGS84坐标系,长轴6378137.000m,短轴6356752.314,扁率1/298.257223563。

 

DOP值有三种测量类型:

水平、垂直和说明(mean)。HDOP测量它和经纬度的关系作为精度,VDOP测量他和海拔的关系作为精度,PDOP,给出一个关于经纬度、海拔精度的完整等级。每个DOP值都是1到50之间数值,其中50 表示非常差的精度,1则表示很理想的精确度。

表2-1列出了划分的一份精确的PDOP值细目分类。PDOP分类描述:

PDOP值——评价——说明

1~2——理想——这是最高的信任级别,应用程序可以在任何时候获取最高的精度

2~3——极好——值得信任的级别,位置的测量相当精确,可以应用于绝大多数应用程序,但是有些非常敏感的应用程序就不行了

4~6——好——这是用来做商业应用的最低等级。位置的测量可以用来做线路导航建议

7~8——中等——位置测量可以用来计算,但是质量还应该提高。推荐用语天空观察

9~20——中下——信任级别很低。位置测量结果应该丢弃或者仅用于粗略估计当前位置

21~50——差——在这个级别的测量结果是不精确的,大概会有半个足球场大的误差,应该丢弃

 

四,常用精度

PDOP:位置精度因子(Position Dilution of Precision),直译为“精度强弱度”,通常翻译为“相对误差”。具体含义是:由于观测成果的好坏与被测量的人造卫星和接收仪间的几何形状有关且影响甚大,所以计算上述所引起的误差量称为精度的强弱度。天空中卫星分布程度越好,定位精度越高(数值越小精度越高)。PDOP表示三维位置定位精度与导航台几何配置关系的一个参数。在全球定位(GPS)系统中,等于用户位置的径向误差(1°)与用户到卫星的距离测量误差(1°)的比值。

Pdop取值范围为:0.5--99.9,为纬度、经度和高程等误差平方和的开根号值,所以Pdop的平方 =Hdop 的平方 +Vdop 的平方。HDOP2+VDOP2=PDOP2

    PDOP( position dilution of precision ) 三维位置精度因子:为纬度、经度和高程等误差平方和的开根号值

    TDOP(time dilution of precision )钟差精度因子:为接收仪内时表偏移误差值。

    HDOP(horizontal dilution of precision )水平分量精度因子:为纬度和经度等误差平方和的开根号值。

    VDOP(vertical dilution of precision )垂直分量精度因子


age:差分延时

VRMS:水平残差

HRMS:垂直残差

RMS :HRMS2+VRMS2=RMS2

Python解决安装模块时报Visual C++ Build Tools问题

分类:Python, 发布于 2021-04-09 16:49:09  浏览(224)

下载VisualCppBuildTools_Full,然后运行命令

visualcppbuildtools_full.exe /Layout VCbuildtools

程序会运行一段时间,在VCbuildtools目录下生成OfflineCache和packages两个文件夹,约1.72GB,将这两个文件夹连同VisualCppBuildTools_Full.exe一起拷贝至没有链接互联网的电脑上安装,就可以解决python模块安装报错的问题了。