Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 9

Частотно-территориальное планирование

18.05.2014, 12:22. Показов 778. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать ПО на Java для ручного проведения ЧТП. ПО должно принимать на вход карту высот местности и позволять расставлять на ней базовые станции разного типа(одночастотные, секторные) и отображать зоны покрытия.

Помогите чем можете.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.05.2014, 12:22
Ответы с готовыми решениями:

Частотно-временной спектр
Доброго времени суток! Помогите, пожалуйста, решить задачу. Есть аудио-запись в формате wav. Нужно получить график этой записи, чтобы по...

Оценивание частотно временных параметров сигналов по цифровой записи
Всем привет, нужна помощь. Буду благодарен за любую оказанную помощь. Суть в том, что необходимо написать программу, в которой...

Управление частотно-регулируемым приводом Unidrive SP через ПЛК VIPA
Есть привод Unidrive SP 1401: ПО CTSoft. Software version 1,11. 2 слот: модуль SM-Profibus-DP: Solutions Module software version...

7
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
22.05.2014, 13:34
А что сделано, и что именно не выходит (не понятно)?
0
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 9
28.05.2014, 05:36  [ТС]
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;
 
 
public class Menu
{
public static void main(String[] args)
   {
      JFrame frame = new Viewer();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.show();
   }
}
 
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.*;
 
class Viewer extends JFrame
{
    Panel panel;
   public Viewer()
   {
      setTitle("ImageViewer");
      setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
 
      // use a label to display the images
      label = new JLabel();
      Container contentPane = getContentPane();
      contentPane.add(label);
      
 
      final JScrollPane scrollPane = new JScrollPane(label);
      contentPane.add(scrollPane, BorderLayout.CENTER);
      // set up the file chooser
      chooser = new JFileChooser();
      chooser.setCurrentDirectory(new File("."));
 
      // set up the menu bar
      JMenuBar menuBar = new JMenuBar();
      setJMenuBar(menuBar);
 
      JMenu file = new JMenu("Файл");
      menuBar.add(file);
 
      JMenuItem openFile = new JMenuItem("Открыть");
      file.add(openFile);
      openFile.addActionListener(new 
         ActionListener()
         {
            public void actionPerformed(ActionEvent evt)
            {
               // show file chooser dialog
              
               FileFilter filter= new FileNameExtensionFilter("Image jpg", "jpg","jpeg");
               chooser.addChoosableFileFilter(filter);
               int r = chooser.showDialog(panel, "chooice dialog");
               // if file selected, set it as icon of the label
               if(r == JFileChooser.APPROVE_OPTION)
               {
                  String name = chooser.getSelectedFile().getPath();
                  label.setIcon(new ImageIcon(name));
               }
            }
         });
 
      JMenuItem exitItem = new JMenuItem("Выход");
      file.add(exitItem);
      exitItem.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               System.exit(0);
            }
         });
      JMenu base = new JMenu("Базовая станция");
      menuBar.add(base);
      
      JMenu typeOne = new JMenu("Одночастотная");
      typeOne.setMnemonic(KeyEvent.VK_S);
 
      JMenuItem scaleOne = new JMenuItem("Радиус 1 км");
      typeOne.add(scaleOne);
 
      scaleOne = new JMenuItem("Радиус 35 км");
      typeOne.add(scaleOne);
      
      scaleOne = new JMenuItem("Радиус 120 км");
      typeOne.add(scaleOne);
      
      base.add(typeOne);
      
      JMenu typeTwo = new JMenu("Секторная");
      typeTwo.setMnemonic(KeyEvent.VK_S);
      
      JMenuItem scaleTwo = new JMenuItem("Радиус 1 км");
      typeTwo.add(scaleTwo);
 
      scaleTwo = new JMenuItem("Радиус 35 км");
      typeTwo.add(scaleTwo);
      
      scaleTwo = new JMenuItem("Радиус 120 км");
      typeTwo.add(scaleTwo);
      
      base.add(typeTwo);
   }
 
   private JLabel label;
   private JFileChooser chooser;
   private static final int DEFAULT_WIDTH = 300;
   private static final int DEFAULT_HEIGHT = 400;
}
Помогите реализовать ручную расстановку(по клику мыши) базовых станции с покрытием на загруженной карте(изображение).
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
28.05.2014, 08:04

Не по теме:

Не очень хорошая идея начинать с GUI, лучше с классами логики.



Вот, набросал немнго:

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
  Карта
*/
class Area {
 
    //Ячейка карты
    public сlass Cell {
        int high; //высота
        Ant[] sygnals; //список антенн, сигналы которых доступны в ячейке
        public Cell(int h) {high = h}
    }
 
    Cell[][] cells; // поле ячеек
    List<Ant> antens; //размещённые антенны. пока не надо, да и не обязательно в этом классе.
    
  //загржать высоты с картинки
    public void load(java.awt.image.BufferedImage img) {
        int w = img.getWidth(), h = img.getHeight();
        cells = new int[w][h];
        for (int x=0; x<w; x++) for (int y=0; y<h; y++) {
             int hig = img.getRGB(x, y);
             cells[x][y] = new Cell(hig);
        }            
    }
}
 
//абстрактная антенна
abstract class Ant {
    int distance, //дальность сигнала
        posX, posY; // координаты антенны
 
    public void showMas(boolean [][] mas) { //для тестирования, показывает массив
        StringBuilder s = new StringBuilder();
         for (int row=0; row<mas.length; row++) {
            for (int col=0; col<mas[0].length; col++) {                
                if (mas[row][col]) s.append("O"); else s.append("+");                
            }
             System.out.println(s.toString());
             s.setLength(0);
         }            
    }
    
    // должен рисовать в массиве, куда доходит сигнал, если местность полностью ровная.       
    abstract void drawCover(boolean[][] cells);    
}
 
 
/*
Обычная антенна, одинаково во все стороны(круг)
*/
class CircleAnt extends Ant {
 
    private int getPointDistance(int x1, int y1, int x2, int y2) {
        double fx1 = x1, fy1 = y1, fx2 = x2, fy2 = y2;
        double d = Math.sqrt(Math.pow(fx2-fx1,2) + Math.pow(fy2-fy1,2));
        return (int) Math.round(d);
    }
    
    @Override
    void drawCover(boolean[][] cells) {
        for (int row=0; row<cells.length; row++)
            for (int col=0; col<cells[0].length; col++) {
                cells[row][col] = true;
                int dist = getPointDistance(posX, posY, row, col);
                if (dist > distance) cells[row][col] = false;
            }
            
}
    
}
 
class SectorAnt extends Ant {
//....
}


Идея такая, метод drawCover рисует сигнал массиве(true - есть сигнал), но ёще надо допилить основной код, как, собственно, неровности искажают. В простейшем виде, проводим линию с точки антенны(posX,posY) до каждой точки, где может быть её сигнал(то, что построил drawCover), и если на пути есть высота выше, чем у точки антенны, то после неё на этой линии сигнал исчезает.

Добавлено через 3 минуты
Кстати, загружать с jpeg лучше не надо, там размытости будут напрягать.
0
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 9
29.05.2014, 02:25  [ТС]
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*
  Карта
*/
public class Area {
 
    //Ячейка карты
    public сlass Cell {
        int high; //высота
        Ant[] sygnals; //список антенн, сигналы которых доступны в ячейке
        public Cell(int h) {high = h}
    }
 
    Cell[][] cells; // поле ячеек
    List<Ant> antens; //размещённые антенны. пока не надо, да и не обязательно в этом классе.
    
  //загржать высоты с картинки
    public void load(java.awt.image.BufferedImage img) {
        int w = img.getWidth(), h = img.getHeight();
        cells = new int[w][h];
        for (int x=0; x<w; x++) for (int y=0; y<h; y++) {
             int hig = img.getRGB(x, y);
             cells[x][y] = new Cell(hig);
        }            
    }
}
В этом классе почти все подчеркивает красным.
Кликните здесь для просмотра всего текста
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
29.05.2014, 02:31
Ну а сообщения какие, если курсор навести на значки ошибок? Наверняка импортов нету.
0
0 / 0 / 0
Регистрация: 18.05.2014
Сообщений: 9
29.05.2014, 02:44  [ТС]
illegal of expression
class, interface or enum excepted
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
29.05.2014, 03:04
Там русская "а" была в слове class почему-то. Ну, и пару мелких ошибок.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Area {
  
    public class Cell {
        int high;
        Ant[] sygnals; 
        public Cell(int h) {high = h;}
    }
        
    Cell[][] cells;
    List<Ant> antens;
    
    public void load(java.awt.image.BufferedImage img) {
        int w = img.getWidth(), h = img.getHeight();
        cells = new Cell[w][h];
        for (int x=0; x<w; x++) for (int y=0; y<h; y++) {
             int hig = img.getRGB(x, y);
             cells[x][y] = new Cell(hig);
        }            
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.05.2014, 03:04
Помогаю со студенческими работами здесь

Амплитудный и частотно-фазовый спектры. Мучаюсь уже месяц или около того
Дан код. clc syms wk bk ck arg k Cabs bk = (2 - 2 * (-1)^k) / pi / k; Cabs = abs(bk); arg = asin(bk / Cabs); subplot(2,...

Как получить график Частотно Импульсной Модуляции (ЧИМ) импульсного сигнала и его спектр
Как сделать не знаю. Какие формулы вводить, значения какие брать, вообще не понятно. В инете ничего по ЧИМ нет! Особенно по маткаду. Нужна...

Планирование БД
Здравствуйте, есть вопрос, связанный с планированием таблицы. Должны быть 2 таблицы: Магазин и Директор. Связь между ними должна...

Сетевое планирование
Помогите, пожалуйста, с составление программы. Мне нужно создавть программу, которая бы строила сетевые графики, с помощью графиков. есть...

Планирование ресурсов
Создаю систему управления проектами. Есть формы Задача и Ресурс. Необходимо реализовать возможность назначения задаче определенных ресурсов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru