Code Monkey home page Code Monkey logo

Comments (7)

yarray avatar yarray commented on September 17, 2024

建议我们先定一下控件读取的数据格式,考虑解决几个问题:

  1. 上述两个接口、mock data 的数据格式都不一样,应该有一个标准格式
  2. 地区名称不标准,如在上层地图称“湖北”,下层地图称“湖北省”
  3. 代码实用性,如果确定只做市一级的疫情,可以用市名为主键做成 object 而不是以 array 存储,全国地级市没有重名
  4. 在标准格式之上,考虑兼容哪些上游数据格式,分任务写 adapter
  5. (optional)考虑查询等其它需求,可制定个别衍生数据格式(如 flatten 的全国各市疫情统计)

目前看来 API 1 的数据格式基础比较好,可以考虑直接使用或者进行微调。不一定要做到 json schema 那么严格,但至少要有个文字版的结构说明

from map-viz.

yarray avatar yarray commented on September 17, 2024

数据更新机制可能也要讨论一下,如果每个前端用户都触发 ajax 请求去 api 拿数据,会不会给 api 提供者带来不必要的负担?

from map-viz.

tongshuangwu avatar tongshuangwu commented on September 17, 2024

感谢!现在VirusMap数据的输入格式是:(创建的小伙伴 @shadowings-zy )

interface dataObject {
  province?: string;
  name: string;
  confirmed: number;
  suspect: number;
  cured: number;
  death: number;
}

为了让现在的另外一个mock数据还能用,建议更新为
我提议可以更新为:

interface dataObject {
  name: string;  //简短的名字,省略“省”,“市” ,“区”(就是API 1里的provinceShortName那种,如果拿到的数据不是的话可以做一下filtering)
  province: string; // 同样省略 “省”
  timestamp: number // updateTime,格式为时间戳序列
  confirmed: number;
  suspect: number;
  cured: number;
  death: number;
  sum?:  {confirmed: number, suspect: number, cured: number, death:number}
}

例如:

interface dataObject {
  name: "石家庄";
  province: "河北"; 
  timestamp: 1579809031353;
  confirmed: 1;
  suspect: 0;
  cured: 0;
  death: 0;
}

代码实用性,如果确定只做市一级的疫情,可以用市名为主键做成 object 而不是以 array 存储,全国地级市没有重名

这个我觉得都可以,数据量不是很大。主要进去了以后好像用的时候还是array用,感觉没太大差别?

数据更新机制可能也要讨论一下,如果每个前端用户都触发 ajax 请求去 api 拿数据,会不会给 api 提供者带来不必要的负担?

我们可以设置每N时间自动拿一次数据,前端客户就用我们拿到的这一层数据。

from map-viz.

yarray avatar yarray commented on September 17, 2024

两个 mock data 分别在哪?我目前还是只看到之前那一个,sum 感觉比较冗余...

dataObject 我觉得基本没问题,但是那只是一条记录的数据格式,我觉得还是综合确定一下 API 的格式吧,几个问题:

  1. 现在顶层是
{
  name: string;
  mapUrl?: string;
  data: array[dataObject];
}

这里 mapUrl 我建议直接去掉,由控件填写;data 部分我建议是 dict,这个问题倒不大,很容易转

  1. 规范没有区分省一级还是市一级,但是实际上数据有差异,比如省一级没有 province 这个字段,不排除后面会有其它区别

  2. timestamp 是放到 dataObject 还是外面有待商榷,我觉得可以有一种 override 的机制

综上我 propose 一个方案供讨论:

TypeScript 定义:

interface CountryData {
  name: string;  // '**'
  timestamp?: number; // integer, unit is 's', unix epoch time
  confirmed: number;
  suspect: number;
  cured: number;
  death: number;
  provinces?: {[name: string]: ProvinceData};
}

interface ProvinceData {
  name: string;  // '湖北'
  timestamp?: number;
  confirmed: number;
  suspect: number;
  cured: number;
  death: number;
  cities?: {[name: string]: CityData};
}

interface CityData {
  name: string;  // '湖北'
  timestamp?: number;
  confirmed: number;
  suspect: number;
  cured: number;
  death: number;
}

这样三种数据可以分开使用,也可以包含一整个数据包里,timestamp 下层 override 上层,使用的最顶层结构要求必须有这个字段。

另外这个任务我领了吧,先开始做着。

from map-viz.

tongshuangwu avatar tongshuangwu commented on September 17, 2024

嗯我觉得你说的数据结构可以,assign给你了,感谢!

from map-viz.

tongshuangwu avatar tongshuangwu commented on September 17, 2024

merge request #27

from map-viz.

dubaopeng avatar dubaopeng commented on September 17, 2024

我也在做地图方面的数据可视化报告,看有没有启发
www.graphvis.cn/sari/index.html

from map-viz.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.