GPSCSV(1) GPSD Documentation GPSCSV(1)

gpscsv - استخراج و تبدیل خروجی JSON از gpsd در قالب CSV

gpscsv [OPTIONS] [host[:port[:device]]]

gpscsv -h

gpscsv -V

برنامه gpscsv یک ابزار پایتون ساده برای خواندن جریان داده‌های JSON از gpsd و ارائه آن‌ها در قالب مقادیر جداشده با کاما (CSV) است. این برنامه ورودی را از یک gpsd مشخص دریافت کرده و به خروجی استاندارد گزارش می‌دهد. برنامه تا زمانی که gpsd متوقف شود، تعداد «-n COUNT» پیام پردازش شوند، «-x SECONDS» ثانیه سپری شود، یا با ^C یا روش‌های دیگر متوقف گردد، به کار خود ادامه می‌دهد.

ابزار gpscsv تنها می‌تواند داده‌هایی را جمع‌آوری کند که gpsd شما از قبل ارسال می‌کند. برای مشاهده کلاس‌های پیام‌های JSON در حال ارسال، از gpspipe استفاده کنید.

یکی از کاربردهای مناسب gpscsv، ایجاد فایل‌های CSV جهت استفاده در برنامه gnuplot است.

ابزار gpscsv نیازی به دسترسی ریشه (root) ندارد، اما با دسترسی ریشه نیز بدون مشکل اجرا می‌شود.

این برنامه گزینه‌های زیر را می‌پذیرد:

-?, -h, --help

نمایش اطلاعات راهنما و خروج.

-c MCLASS, --class MCLASS

انتخاب پیام‌های کلاس JSON از نوع MCLASS. این گزینه کلاس پیش‌فرض TPV را بازنویسی می‌کند. برای اطلاعات بیشتر بخش CLASSES را در زیر ببینید.

--cvt-isotime

تبدیل فیلدهای با نام «time» از قالب زمانی ISO به زمان UNIX.

-D LVL, --debug LVL

تنظیم سطح اشکال‌زدایی روی LVL. مقدار پیش‌فرض 0 است. آرگومان‌های بزرگ‌تر از 0 خروجی اشکال‌زدایی بیشتری تولید می‌کنند.

--device DEVICE

مشخص کردن DEVICE متصل در gpsd برای اتصال به آن. پیش‌فرض روی همه دستگاه‌ها است.

-f FIELDS, -fields FIELDS

فیلدهای (FIELDS) پیام JSON جهت استخراج در خروجی. برای استخراج تمام فیلدهایی که در ابتدا دیده می‌شوند، مقدار FIELDS را خالی ('') بگذارید. مقدار پیش‌فرض بسته به CLASS متغیر است.

--file FILE

خواندن JSON از FILE به جای خواندن از gpsd.

--header HEADER

تنظیم شیوه سربرگ به HEADER. مقدار 0 برای بدون سربرگ، 1 برای درج فیلدها به عنوان سربرگ، و 2 برای ارسال فیلدها به عنوان کامنت ('#'). مقدار پیش‌فرض 1 است.

--host HOST

اتصال به gpsd روی میزبان HOST. مقدار پیش‌فرض localhost است.

-n COUNT, --count COUNT

خروج پس از ارائه COUNT رکورد در خروجی. مقدار COUNT را برای غیرفعال کردن روی 0 بگذارید. پیش‌فرض 0 است.

--port PORT

استفاده از PORT برای اتصال به gpsd. پیش‌فرض 2947 است.

--separator SEPARATOR

استفاده از SEPARATOR به عنوان جداکننده فیلدها. جداکننده پیش‌فرض ویرگول یا کاما (',') است.

-V, --version

نمایش نسخه gpscsv و خروج.

-x SECONDS, --seconds SECONDS

خروج پس از سپری شدن SECONDS ثانیه. برای غیرفعال کردن مقدار SECONDS را روی 0 قرار دهید. پیش‌فرض 0 است.

همه گزینه‌های تکی فوق را می‌توان چندین بار مشخص کرد، اما تنها آخرین مورد مشخص‌شده اعمال خواهد شد..SH "کلاس‌ها (CLASSES)"

برخی از کلاس‌های پیام JSON در gpsd شامل زیرکلاس‌ها هستند. gpscsv امکان دسترسی مستقیم به آن‌ها را با استفاده از یک فراکلاس (MCLASS) فراهم می‌کند.

MCLASS کلاس توضیحات
ALMANAC SUBFRAME ALMANAC از SUBFRAME JSON
HEALTH SUBFRAME HEALTH از SUBFRAME JSON
HEALTH2 SUBFRAME HEALTH2 از SUBFRAME JSON
IONO SUBFRAME IONO از SUBFRAME JSON
NMCT SUBFRAME NMCT از SUBFRAME JSON
SUBFRAME1 SUBFRAME SUBFRAME1 (Ephemeris 1) از SUBFRAME JSON
SUBFRAME2 SUBFRAME SUBFRAME2 (Ephemeris 2) از SUBFRAME JSON
SUBFRAME3 SUBFRAME SUBFRAME3 (Ephemeris 3) از SUBFRAME JSON
SAT SKY ماهواره‌های مجزا از SKY
SKY SKY بخش‌های اصلی SKY JSON
TPV TPV بخش‌های اصلی TPV JSON

به‌طور پیش‌فرض، کلاینت‌ها داده‌ها را از دیمن محلی gpsd در حال اجرا روی localhost و با استفاده از پورت پیش‌فرض ۲۹۴۷ مربوط به GPSD جمع‌آوری می‌کنند. آرگومان اختیاری هر کلاینت می‌تواند این رفتار را بازنویسی کند: [server[:port[:device]]]

برای توضیحات بیشتر و مثال‌ها، بخش ARGUMENTS را در صفحهٔ راهنمای gps(1) ببینید.

چند مثال پایه‌ای و مستقل:

دریافت سه چرخه از داده‌های TPV:

$ gpscsv -c TPV -n 3
time,lat,lon,altHAE
2021-07-28T22:38:37.000Z,44.0688638,-121.3140643,1108.223
2021-07-26T22:38:37.000Z,44.068863833,-121.314064333,1108.3
2021-07-28T22:38:38.000Z,44.0688637,-121.314065,1108.363

دریافت یک مجموعه از داده‌های ماهواره‌ای:

$ gpscsv -c SAT -n 1
time,gnssid,svid,PRN,az,el,ss,used,health
2021-07-28T22:37:46.000Z,0,8,8,311.0,28.0,33.0,True,1
2021-07-28T22:37:46.000Z,0,10,10,290.0,74.0,50.0,True,1
2021-07-28T22:37:46.000Z,0,15,15,45.0,18.0,31.0,False,1
2021-07-28T22:37:46.000Z,0,16,16,244.0,7.0,23.0,True,1
2021-07-28T22:37:46.000Z,0,18,18,109.0,43.0,37.0,True,1
2021-07-28T22:37:46.000Z,0,23,23,49.0,62.0,38.0,True,1
2021-07-28T22:37:46.000Z,0,24,24,87.0,16.0,28.0,True,1
2021-07-28T22:37:46.000Z,0,27,27,280.0,52.0,42.0,True,1
2021-07-28T22:37:46.000Z,0,32,32,188.0,32.0,42.0,True,1
2021-07-28T22:37:46.000Z,5,3,195,305.0,6.0,13.0,False,1
2021-07-28T22:37:46.000Z,6,2,66,38.0,8.0,21.0,False,1
2021-07-28T22:37:46.000Z,6,3,67,34.0,60.0,32.0,True,1
2021-07-28T22:37:46.000Z,6,4,68,226.0,63.0,34.0,True,1
2021-07-28T22:37:46.000Z,6,5,69,220.0,12.0,32.0,True,1
2021-07-28T22:37:46.000Z,6,11,75,-999,4.0,0.0,False,2
2021-07-28T22:37:46.000Z,6,12,76,47.0,0.0,0.0,False,1
2021-07-28T22:37:46.000Z,6,17,81,142.0,8.0,31.0,True,1
2021-07-28T22:37:46.000Z,6,18,82,138.0,57.0,40.0,True,1
2021-07-28T22:37:46.000Z,6,19,83,333.0,70.0,29.0,True,1
2021-07-28T22:37:46.000Z,6,20,84,323.0,10.0,0.0,False,1

چند مثال رسم نمودار، آن‌ها را دقیقاً به ترتیب نمایش‌داده‌شده انجام دهید:

دریافت ۱۰۰ نمونه از time,lat,lon,altHAE:

$ gpscsv -n 100 --cvt-isotime  > tpv.dat

دریافت ۱۰۰ نمونه از time,epx,epy,epv,eph,sep

$ gpscsv -n 100 --cvt-isotime -f time,epx,epy,epv,eph,sep > ep.dat

دریافت ۱۰۰ نمونه از time,xdop,ydop,vdop,tdop,hdop,gdop,pdop

$ gpscsv -n 100 --cvt-isotime -c SKY  > sky.dat

دریافت ۱۰۰ نمونه از time,nSat,uSat

$ gpscsv -n 100 --cvt-isotime -c SKY -f time,nSat,uSat  > sat.dat

اجرای gnuplot در حالت تعاملی:

$ gnuplot

برخی مقدمات و تنظیمات اولیه gnuplot:

# this are csv files
gnuplot> set datafile separator ','
# use the first line as title
gnuplot> set key autotitle columnhead
# X axis is UNIT time in seconds.
gnuplot> set xdata time
gnuplot> set timefmt "%s"

اکنون برای رسم زمان در برابر عرض جغرافیایی با استفاده از tpv.dat بالا:

gnuplot> plot 'tpv.dat' using 1:2

سپس برای رسم طول جغرافیایی و altHAE در نمودارهای مجزا:

gnuplot> plot 'tpv.dat' using 1:3
gnuplot> plot 'tpv.dat' using 1:4

رسم هم‌زمان عرض و طول جغرافیایی روی یک نمودار:

gnuplot> set y2tics
gnuplot> plot 'tpv.dat' using 1:2, '' using 1:3 axes x1y2

رسم epx، epy، epv، eph و sep در یک نمودار، با استفاده از ep.dat بالا:

gnuplot> plot 'ep.dat' using 1:2, '' using 1:3, \
         '' using 1:4, '' using 1:5, '' using 1:6

رسم تمامی DOPها در یک نمودار، از sky.dat بالا:

gnuplot> plot 'sky.dat' using 1:2, '' using 1:3, '' using 1:4, \
         '' using 1:5, '' using 1:6, '' using 1:7, '' using 1:8

رسم هم‌زمان nSat و uSat با یکدیگر:

gnuplot> plot 'sat.dat' using 1:2, '' using 1:3

نمودار پراکندگی Lat/lon:

# x is no longer time
gnuplot> set xdata
gnuplot> plot 'tpv.dat' using 3:2 title 'fix'

0

در صورت موفقیت.

1

در صورت شکست

gpspipe(1), gpsd_json(5), gpsd(8), gnuplot(1)

وب‌سایت پروژه: https://gpsd.io

حق نشر این فایل متعلق به پروژه GPSD در سال 2020 است
SPDX-License-Identifier: BSD-2-clause

Gary E. Miller

2025-11-04 GPSD, Version 3.27.5